HN user

dougabug

586 karma

AI Scientist

Posts3
Comments304
View on HN

No, your constant output example isn’t what people are talking about with “hallucination.” It’s not about destroying information from the input, in the sense that it you asked me a question and I just ignored you, I’m not in general hallucinating. Hallucinating is more about sampling from a distribution which extends beyond what is factually true or actually exists, such as citing a non-existent paper, or inventing a historical figure.

A pixel (in the context of an image) could be “wrong” in the sense that its assigned value could lead to an image that just looks like a bunch of noise. For instance, suppose we set every pixel in an image to some random value. The resulting would look like total noise and we humans wouldn’t recognized it as a sensible image. By providing a corpus of accepted images, we can train a model to generate images (arrays of pixels) which look like images and not, say, random noise. Now it could still generate an image of some place or person that doesn’t actually exist, so in that sense the pixels are collectively lying to you.

My recollection of CLIP is that it’s more of a text-language co-embedding, where you have two transformers, one which encodes images into vectors and one which encodes captions into vectors. Through a contrastive loss (positive pairs are captioned image pairs, negative pairs are random image-caption combinations), embeddings of positive image-caption pairs are brought together (i.e., made similar) and embeddings of negative image-caption pairs are made more dissimilar.

https://openai.com/index/clip/

You need to be very careful about making sweeping generalizations based on a single personal anecdote. The really large data sets typically have very high error rates and sample biases. For instance, Google’s JTF300M is far noisier than ImageNet, which itself is hardly free of errors and biases. Any data set with hundreds of millions to billions of images will generally contain a large proportion of images and labels scraped from the web, w/ automatic filtering or pseudolabeling, perhaps w/ some degree of sampled verification by human labelers.

In fact, generally DL is quite tolerant to label noise, especially using modern training methods such as SSL pretraining.

https://arxiv.org/pdf/1705.10694.pdf https://proceedings.neurips.cc/paper/2018/file/a19744e268754... https://proceedings.mlr.press/v97/hendrycks19a.html

That statement was clearly false. With an amazing teacher, an extremely bright student, focus, patience, time, etc., sure we can have the next Galois… but in the vast majority of cases, we should avoid setting kids up for failure by expecting them to easily grasp things which took humanities greatest minds centuries to grasp. Newton “invented” Calculus in the 17th Century, but these ideas had been percolating since Archimedes and even before going back two millennia.

Calculus is not easy to teach to children. We fail to teach it adequately to most college students in their first two years of study. Even a few historically noteworthy mathematicians failed their first contact with the subject.

Elementary linear algebra is far easier to understand and motivate. We can deal with finite, concrete examples without having to delve into the subtle complexities of limits, continuity, and infinity.

Calculus was quite difficult for human civilization to get a logically sound handle on; basically, it took the better part of two centuries from Newton’s original formulation of Calculus in the 17th Century to the work of Cauchy, Gauss, Weierstrass, Dedekind, Riemann, etc working throughout the 19th Century to develop rigorous foundations for Analysis (the modern name for the subject). That’s where all the epsilon-delta business comes in. But this machinery is totally overwhelming for the vast majority of children and teenagers without signicant context, motivation, and guidance.

The analogy to a ‘for loop’ in programming is pretty direct to a mathematical summation. For S := 0, i := 1 .. N { S := S + a[i] } differs only in notation from the standard sigma notation for a finite series.

You don’t need to look far for applications of Calculus. Any simulation of a physical system, such as the Solar System, navigating the DART space vehicle into an asteroid; modeling climate, nuclear explosions, fluid dynamics, structural stability, propagation of sound through matter, modeling and manipulating the properties of semiconductors through controlled diffusion of dopants, chemical engineering, thermodynamics, electrodynamics, optics, quantum mechanics, hypersonic missile flight, even Computer Graphics has the Rendering Equation at its heart …

Mastery of Calculus (and the ability to apply it to model dynamics) is pretty much the dividing line between Classical Ancient civilizations, and the modern world.

The first AI generated feature length film I’d want to see would be, “It’s a Wonderful Life, Calculus,” where we get to see what human history would’ve been like if we’d never stumbled across Calculus.

So the basic idea at the heart of Calculus is that when you break a problem up into tiny enough pieces, in the right way, the pieces become simpler to analyze and approximations become much more accurate. Like, if I break a complex surface into triangles, if the triangles are small enough, many of the physical properties of interest can be computed using the little triangles.

The two main manifestations of this principle are differentiation and integration. With differentiation, the simplification which comes from breaking a function into tiny pieces is that the pieces behave asymptotically like linear functions.

For integration, the simplification becomes that the tiny fragments eventually tend to have approximately uniform density, so the mass of the whole body is the sum of the masses of all the tiny bits, each of which is just the volume of the fragment times its density.

Differentiation and Integration are in some sense inverses, or opposite sides, of single greater idea. In one dimension, the derivative of the (indefinite) integral of a function equals the original function, and the integral of the derivative of a function is that function plus a constant. Almost inverses of each other, but not quite, and this nuance is where some care is required in developing your understanding of the subject.

I would actually start with a first pass at elementary linear algebra, before taking a serious crack at even single variable Calculus. Then let the key ideas marinate in your brain; develop some facility and intuition / insight.

Multivariable Calculus hardly makes any sense without a basic amount of linear algebra. It’s a bit of a historical accident that (Western) mathematics developed Calculus extensively prior to linear algebra taking shape as a significant subject. Don’t try to tackle Multivariable Calculus with a decent grip on matrices. Maybe do some computer graphics and learn how to build 2D & 3D shapes and animate them using matrices.

You have the first prerequisite, the desire to learn! Try to find resources which nurture your interest, until it grows into the will to learn. I find the history of mathematics and how it came to be, its role in the rise of civilization, to be quite inspiring.

Between YouTube, and maybe the right blogs or online classes, it seems like a motivated person could learn almost anything online. There’s also a social aspect, we learn by talking about things with others, sometimes as pupils, other times as peers, and even teachers. Try to teach concepts you’ve learned to other people.

Finally, you can’t learn math just by reading or listening, any more than you can learn to play soccer just by watching matches. Math is a problem solving art, you have to resist the urge to peek at the answer until you’ve exerted serious effort and put in the time.

If you removed all of the noise in a corrupted image in one step, you would have a denoising autoencoder, which has been around since the mid-aughts or perhaps earlier. Denoising diffusion models remove noise a little bit at a time. Think about an image which only has a slight amount of noise added to it. It’s generally easier to train a model to remove a tiny amount of noise than a large amount of noise. At the same time, we likely introduced a small amount of change to the actual contents of the image.

Typically, in generating the training data for diffusion models, we add noise incrementally to an image until it’s essentially all noise. Going backwards from almost all noise to the original images directly in one step is a pretty dubious proposition.

No, NeRFs are more interpretable because they directly model field densities which absorb and emit light. In this respect they are something akin to a neural version of photogrammetry. They don’t need to train on a large corpus of images, because they can reconstruct directly from a collection of posed images.

On the other hand, diffusion models can learn fairly arbitrary distributions of signals, so by exploiting this learned prior together with view consistency, they can be much more sample efficient than ordinary NeRFs. Without learning such a prior, 3D reconstruction from a single image is extremely ill-posed (much like monocular depth estimation).

This approach is interesting in that it applies image-to-image diffusion modeling to autoregressively generate 3D consistent novel views, starting with even a single reference 2D image. Unlike some other approaches, a NeRF is not needed as an intermediate representation.

Giving no reason, absent a contractual or legal requirement to provide one, falls far short of offering up a blatantly illegal explanation. Even so, companies have clearly been found guilty of illegal discrimination, even when they went out of their way to hide their unlawful motivations.

No, state and federal law explicitly create protected classes, and describe the scope of protections granted. A service provider would be opening itself up to huge liability if it cut someone’s service based on, for instance, race or gender.

I am not suggesting that the right tools will allow absolutely anyone to be happy working in any given role in the domain of software development. Scoping is a big part of finding the right roles for people.

Maybe a person loves developing prototypes and POCs, or shepherding new systems through phases of adoption prior to reaching massive “scale.” As some people are wont to say, “Everything breaks at scale.”

Everybody has a complexity band in which they are comfortable operating. Many problems of high complexity can be decomposed sufficiently that they can be attacked teams of mostly mere mortals, with perhaps some assistance or over-sight from the Anointed Ones. Also, many people have significant abilities to navigate the complexities of, say, differential topology but C++ not so much. And vice versa. How information is presented impacts our ability to cope with complexity.

So would this be something like OCP, but at the level of an entire eCommerce marketplace? If so, that sounds pretty awesome.

Main pitfall would seem to be free riders cloning the system, stealing what works, creating closed source improved versions and killing the upstream.

It’s not a zero sum game. There isn’t some fixed, finite demand for software. There’s no upper bound on how much value can be created by skilled, imaginative software engineers, and a programmer can be productive with a relatively inexpensive set of tools (i.e., a computer and Internet access, which pretty much everybody has today).

If software is eating the world, eventually almost all jobs will in some aspects be software jobs, analogous to how 98% of the population used to be engaged in some aspect of agricultural production. We should focus on providing people with the productivity amplifying tools which might sustain a high quality standard of living.