HNHacker News
TopNewBestAskShowJobs

taliesinb

2,464 karma · joined July 25, 2010

Category theory and AI @ symbolica.ai

https://tali.link

https://twitter.com/taliesinb

submissionscomments
taliesinb··on Ask HN: What's your quarantine side project?
I have wanted to do exactly this for a long time. E.g. Bear is great but I want to make all kinds of modifications to it but I can't.

How do I follow along?

taliesinb··on Penrose: Create diagrams by typing mathematical notation in plain text
Yes indeed! Does anyone know of software for creating Penrose diagrams?
taliesinb··on Legible Mathematics: Sketches of interactive arithmetic for programming (2014)
I always enjoy seeing new attempts at visualizing and explaining function composition. Here’s something I played around with a few years ago that tried to visualize function composition: https://taliesin.ai/posts/function-trees/
taliesinb··on Africa Is Building an A.I. Industry That Doesn’t Look Like Silicon Valley
Case in point from today’s Guardian: https://www.theguardian.com/education/2019/oct/01/oxford-pro...
taliesinb··on Africa Is Building an A.I. Industry That Doesn’t Look Like Silicon Valley
Yes! The videos were just updated, here is the playlist: https://www.youtube.com/playlist?list=PLICxY_yQeGYng7mbMmuZj...
taliesinb··on Africa Is Building an A.I. Industry That Doesn’t Look Like Silicon Valley
Great to see interest in the Indaba from the HN community! This year was a lot of fun; we had some amazing students, speakers, and tutors.

While the practical notebooks we used in 2018 were already amazing, my colleagues and I worked hard on expanding and improving them for the 2019 Indaba. In case anyone wants to check them out, here's a full list of the practicals (the links go to Google Colab notebooks)

1a: Machine Learning Fundamentals, http://bit.ly/2nfeu4W

1b: Build your own TensorFlow, http://bit.ly/2obD1rK

2a: Deep Feedforward Networks, http://bit.ly/2oQSjSQ

2b: Optimization for Deep Learning, http://bit.ly/2nqkyHB

3a: Convolutional Networks, http://bit.ly/2nqdQRX

3b: Deep Generative Models, http://bit.ly/2nnkisU

4a: Recurrent Neural Networks, http://bit.ly/2ncgYkx

4b: Reinforcement Learning, http://bit.ly/2oO4lMK

They're also available on the official github page: https://github.com/deep-learning-indaba

We'd love any feedback on the practicals to improve them for next year!

If you have some ML expertise and would like to volunteer to be a tutor at next year's Indaba, which will be held in Tunisia in late August 2020, drop me a mail at contact (at) taliesin.ai. I also encourage anyone to apply to attend as a student!

taliesinb··on MLIR Primer: A Compiler Infrastructure for the End of Moore’s Law
See the related HN discussion from earlier today about differentiable programming with Swift for TensorFlow and its corresponding changes to the Swift language: https://news.ycombinator.com/item?id=20890149
taliesinb··on Differentiable Programming Mega-Proposal
> It's hard to reformulate programs in a way s.t. the derivative can mean something meaningful.

Really? The gradients computed by AD are the exact answer to the following question: if I were to change this input or parameter an infinitesimal amount, how much would it change the output of my function? That is always meaningful (when it is defined), and means what I just said. You can easily make functions where it is not defined, of course, just like you can make a sphere into two spheres with the Banach-Tarski theorem!

But there are vast, vast forests of numerical computation employed in industry, science, finance, engineering, where it is almost always defined.

And even for more “chunky” computations where the non-differentiability is more severe, there are algorithms like REINFORCE that you can use to estimate gradients through these parts.

taliesinb··on Differentiable Programming Mega-Proposal
Yup, work is continuing apace with Julia’s next-gen Zygote project.

Also, from the GP’s thought about applications beyond DL, my favorite examples so far are for model-based RL [1] and Neural ODEs [2]

[1] https://fluxml.ai/2019/03/05/dp-vs-rl.html

[2] https://julialang.org/blog/2019/01/fluxdiffeq

taliesinb··on Differentiable Programming Mega-Proposal
It’s a good question what the plans are for DP languages to handle situations where non-differentiability shouldn’t be ignored.

For sensitivity analysis it might be disastrous to conclude that an output is sensitive to an input when it is actually not, merely because an intermediary ReLU hit 0, for example.

A conservative approach could be to define versions of the relevant functions that threw exceptions at such points, or that also calculated the trusted margin of the resulting gradients; non-differentiability would then produce a zero trust margin.

taliesinb··on Differentiable Programming Mega-Proposal
Probably the main justification is that the analysis and transformation steps needed to compute the vjp and jvp pullbacks of a function (which correspond to reverse- and forward-mode automatic differentiation) require enough of the other machinery of a compiler that they are best done WITHIN a compiler. Then other things become quite natural, too, like producing the tangent vector versions of data structures like tuples and maps!

Moreover, a statically typed language like Swift is a much better starting point for this kind of effort than Python. Array shapes and dimensions are already a type system - you might as well go the whole distance and get all the other safety, readability, and efficiency benefits!

PS shout out for named array axes as the future of array-based (and hence differentiable) programming... see http://nlp.seas.harvard.edu/NamedTensor for a good rationale

taliesinb··on Differentiable Programming Mega-Proposal
If you are interested in following along, the Swift for TensorFlow team has a design meeting every Friday. The meetings are live-streamed and anyone can join. I recommend them if you are curious and want to hear more about the challenges and opportunities! A recent talk had Jeremy Howard (of fasti.ai fame) present the full-featured deep learning API he has designed on top of Swift for TensorFlow.

You can find out more on the mailing list https://groups.google.com/a/tensorflow.org/forum/m/#!forum/s...

taliesinb··on Differentiable Programming Mega-Proposal
While the gradients don’t technically exist, you usually use the limiting value from one side (e.g for the commonly used ReLU activation, you can use either 0 or 1). This is justified by the observation that randomly initialized networks are extremely unlikely to encounter these particular values without some kinder of deeper conspiracy happening. You could put this on a mathematical footing by saying the set of non differentiable points has measure zero, for example.
taliesinb··on Differentiable Programming Mega-Proposal
Capitalizing on the presence of people who might be new to Automatic Differentiation and want a deeper understanding of how it works, here is an interactive Colab notebook I wrote about this topic entitled “Build your Own TensorFlow” for the Deep Learning Indaba that just happened in Kenya: https://colab.research.google.com/drive/14GeXkFd5pQKKNIJ7BMs...
taliesinb··on Sun Dog
Sun dogs play a small role in the excellent alternative history / horror series “The Terror”, starring two of my favorite character actors Jared Harris and Ciarán Hinds, about the loss of the 1845 Franklin expedition to the Arctic. Thoroughly recommended!
taliesinb··on Julia v1.2
Bit late to the party here, but here's a thing that's been bugging me: as a veteran of many deep learning frameworks, I’m 100% convinced of many of the arguments put forward in "Tensors Considered Harmful" [1].

Basically, I can summarise the argument as: for complex, real-world projects involving multidimensional arrays, having to remember which dimension means which thing, and track these through various tensor transformations, is the 21st century equivalent of how prior to high level programming languages we had to manually track which registers we we were using to store what quantities, and how this changed in different parts of a program.

It was the real dark ages of programming, and we’re in that same place with a lot of complex deep learning models now.

So my question is: has this been discussed at all in the Julia community? Is this on anyones radar? Since one of the core competencies of Julia is array processing and elegant metaprogramming, I would hope that it can gracefully absorb the idea of named array axes in a way that feels natural and complete, and could start showing up in ML frameworks like Zygote and Flux down the line...

[1] http://nlp.seas.harvard.edu/NamedTensor

taliesinb··on Model-Based Reinforcement Learning for Atari
Hasselt and co, who authored the original Rainbow DQN model that was bested by SimPLe (this paper), responded recently with "When to use parametric models in reinforcement learning?" [1], which is an interesting read. Punchline: "We explain why their [SimPLe's] results may perhaps be considered surprising, and show that in a like-for-like comparison Rainbow DQN outperformed the scores of the model-based agent, with less experience and computation.". In other words, in an apples-to-apples comparison, model-based RL have not been shown to be more sample efficient than suitably optimized DQNs.

Hasselt argues this is because if you need accurate updates to your Q values, you need to trust the learned model you are using for simulated rollouts on the states on which you are sampling. But if your simulation model is trustworthy on these states, it is because it saw a lot of real transitions from these states from the actual environment. But then you might as well just have stored those transitions in a big enough replay buffer and use ordinary Q-learning with experience replay. And this indeed seems to be the case: when you give Rainbow DQN a nice big replay buffer, it is more sample efficient (both real and imagined samples) than SimPLe. Hasselt leaves some wiggle room for learned models to help with action selection and credit assignment, though.

My counterargument to this (supplied with zero evidence of course!) would be that with the right inductive biases, a learned model can generalize quite accurately and with very few seen transitions, and hence be so sample efficient that it would outperform the replay memory approach. I'd imagine that the kinds of inductive biases that are appropriate for a varied meta-environment like Atari are quite general things like 'visually localized objects typically only interact when they approach or touch each other', and 'the arrow keys likely control one localized object'. There are approaches for how to encode such priors; [2] is a good survey paper, and [3] employs some of these ideas for RL. Moreover, these are the kinds of priors that one imagines are encoded or biased towards by evolution in actual animal brains.

[1] https://arxiv.org/abs/1906.05243

[2] https://arxiv.org/abs/1806.01261

[3] https://arxiv.org/abs/1806.01830

taliesinb··on From automatic differentiation to message passing [video]
> For example, would it be useful to have an AD-like pass that calculated trusted regions for gradient updates?

To answer my own question, yes: http://papers.nips.cc/paper/7112-scalable-trust-region-metho...

taliesinb··on From automatic differentiation to message passing [video]
Haha thanks for finding links! Was on a bus on my phone, so didn't have the patience...
taliesinb··on From automatic differentiation to message passing [video]
This is a perspective I’ve been taking recently as I’ve been investigating next-gen DL frameworks like Julia’s Zygote and Swift for Twnsorflow. So it’s very nice to see this articulated so well here by someone who has been thinking deeply about it for so long.

I’ll add some things that relate to this perspective: there is a follow up paper to the DL via Hessian-free optimization paper by James Martens that develops a variant of AD which calculates a special curvature quantity which is useful for efficient second order optimization. This emphasizes that AD is just one of a family of program transformations, most of which are probably waiting to be discovered. For example, would it be useful to have an AD-like pass that calculated trusted regions for gradient updates? And: why do we not do more iteration during DL in which we interleave forward and backward for a single layer only? (rhetorical question, there are many reasons but asking this question forces you to think deeply about a lot of things)

Also, if you generalize VAEs to be arbitrary differentiable programs you immediately run into versions of message passing. For example, vector quantized VAEs are a precisely a soft version of the EM step in k-means. So how would we develop more advanced variational programs in which this process is better managed? There may be very different forms for the inference and generation phases that are not related by a program transformation, or ARE related but only in a high-level way best captured by functional programming primitives.

Any other people nerding out about this stuff please say hi!

taliesinb··on Goals and Rewards Redraw the Brain’s Map of the World
Evidence for https://www.biorxiv.org/content/biorxiv/early/2017/07/27/097... ?
taliesinb··on An Explicitly Relational Neural Network Architecture
Thanks! I see you are doing your PhD in ILP. As someone who is pondering the topic of his future PhD, the obvious question is: have ILP models been enriched with automatic differentiation? How? Did it help?

Either way, can you recommend a good survey article on ILP and the last few years of progress on that front?

taliesinb··on An Explicitly Relational Neural Network Architecture
I haven't encountered it used with negative connotations, even by deep learning people. Neither does cursory Googling show it having that valence.
taliesinb··on An Explicitly Relational Neural Network Architecture
I don't know how you see that sentiment in what I wrote.
taliesinb··on An Explicitly Relational Neural Network Architecture
It depends how those symbols are encoded. Techniques like attention, and systems like transformers that are built on top of them, are often produce highly interpretable execution traces simply because their patterns of activity are very revealing of how they are going about solving the task. It's harder to interrogate their learned weights in any free-standing way, of course.

But the neuro-symbolic concept learning paper I gave already shows the potential translucency of these kinds of hybrid systems: the linguistic interface (its a VQA task) allows one to simply look up the feature vectors and programs associated with particular phrases or English nouns. Similarly, the scene is parsed in an explicitly interpretable way, with bounding boxes for the various objects on which reasoning will commence. This 'bridge' theme between natural language and the underlying task space is really powerful, and it probably makes sense to figure out how we include them for systems that have nothing to do with natural language.

https://arxiv.org/abs/1901.11390 contains another great example of how interpretable such models can be, especially if they are generative. Take a look at those segmentations!

Lastly, https://arxiv.org/abs/1604.00289 lays out this vision in a lot more detail.

taliesinb··on An Explicitly Relational Neural Network Architecture
There's CLEVR: http://openaccess.thecvf.com/content_cvpr_2017/papers/Johnso...
taliesinb··on An Explicitly Relational Neural Network Architecture
What excites me about this and similar work (e.g. https://arxiv.org/abs/1904.12584) is that it augurs well for a new era of AI in which we combine the strength of deep learning (specifically, the teaching signal provided by automatic differentiation) and symbolic GOFAI (with its appeal to interpretability and traditional engineering principles).

Of course we need to keep the gradients, architecture search, hyperparameter tuning, scalable training to massive datasets, etc., but there is a growing sense that the programs we write can encode extremely powerful priors about how the world works, and to not encode those priors leaves our learning algorithms subject to attacks, bugs, poor sample efficiency, bad generalization, weak transfer. Not to mention a host of rickety conclusions that are probably poisoned by hyperparameter hacking.

Conversely, we need to try to avoid the proliferation of black box systems that require heroic efforts of mathematical analysis to understand and debug. Take for example the highly sophisticated activation atlas work by Shan Carter and others, which was needed to reveal that many convnets are vulnerable to an almost childlike kind of juxtapositional reasoning (snorkler + fire engine = scuba diver). Beautiful work, but to me it would be better if that form of analysis wasn't necessary in the first place, because the nets themselves were incapable of reasoning about object identity using distant context.

We need systems that are, by design, amenable to rigorous and lucid scientific analysis, that are debuggable, that admit simple causal models of their behavior, that are provably safe in various contexts, that can be straightforwardly interrogated to explain their poor or good performance, that suggest modification and elaboration and improvement other than adding more neurons. We need to speed the maturation of modern deep learning out of the alchemical phase into something more like aeronautical engineering.

The major innovations in recent years have been along these lines, of course. Attention is a great example, basically supplanting RNNs for a lot of sequence modelling. Convolutions themselves are probably the ur-example, of course. Graph convolutions will be the next major tool to be pushed into wider use. To the interested observer the stream of innovations seems not to end. But the framing that makes this all very natural is precisely that of this being the union of computer programming, where coming up with new algorithms for bespoke tasks is commonplace, with automatic differentiation, which allows those algorithm to learn.

What remains exciting virgin territory is how we best we put these new beasts into the harness of reliable AI engineering. That is in its infancy, because how you write and debug a learning program is completely different to the ordinary sort... there are probably 10x and 100x productivity gains to be realized there from relatively simple ideas.

taliesinb··on Mathematics all-in-one cheat-sheet (2013) [pdf]
Speaking of, can anyone commend some good Anki mathematics decks?
taliesinb··on Penrose: Create diagrams by typing mathematical notation in plain text
i’m having trouble finding a gallery of examples that give a sense of the range of different diagrams Penrose can create. anyone know if there is such a thing?
taliesinb··on FeX: Forum Explorer – Rethinking how we interact with threaded conversations
Do you mind linking to the abstract? Would like to read that history.
← PreviousPage 5 of 25Next →