First up, this question differs from the other ones on this site as I would like to know the isolated meaning of nabla if that makes sense. Meanwhile, other questions might ask what it means in relation to something else. This might be a very stupid question; it's hard to tell when I struggle to understand what it indicates, and thus this might seem very idiotic for a person fully knowledgeable about its meaning.

Now from the document How do the $\nabla x$ and $\nabla \cdot$ notations work?:

Enter image description here

Currently I interpret the nabla symbol as a way of turning something into a vector. Is my understanding correct?

Anyway, what is the meaning of it, and why is it used? (Please try and describe it as simple as possible.)

Less important

In case there should exist multiple meanings of this symbol, this is the context: I stumbled upon this symbol when researching neural networks (C denotes the cost function):

"-∇C(...)= [*this is a vector of weights and biases*]" (source)

  • $\begingroup$ It's "a vector containing operators", and those operators are partial differentiation operators. $\endgroup$
    – Andrew Li
    Mar 27 '18 at 13:47
  • $\begingroup$ Do you mean the gradient? The vector of the partial derivatives $\endgroup$
    – Ripstein
    Mar 27 '18 at 13:48
  • 1
    $\begingroup$ Nabla is a cute way of writing down some vector calculus derivatives in a way that is easy to remember. If you are interested in $\nabla f$ for some function $f$ however, you should look up what the "grad" derivative is. $\endgroup$
    – Joppy
    Mar 27 '18 at 13:50
  • 5
    $\begingroup$ $\nabla$ isn't a thing in the same way that $\frac d{dx}$ isn't a thing. By itself, it means nothing and that someone made a typo. But in combination with a function, then it means something. $\endgroup$
    – Teepeemm
    Mar 27 '18 at 15:22
  • 1
    $\begingroup$ Do you care about $\nabla \cdot \vec{f}$ or $\nabla \times \vec{f}$? $\endgroup$
    – jpmc26
    Mar 27 '18 at 21:59

We may think of $ \nabla $ as an operator ( del operator ) in the following sense.

It takes a function $f$ and turns it into a vector $\nabla f$ .

$\nabla f= \left\langle \frac {\partial f}{\partial x},\frac {\partial f}{\partial y}, \frac {\partial f}{\partial z} \right\rangle $ is called the gradient vector.

The gradient vector points to the direction at which your function increases most rapidly.

For example if $$ f(x,y,z)= x+3y^2 -10z$$ Then $$ \nabla f (x,y,z)= \langle 1,6y,-10\rangle $$

and if there is a point given, say $(1,3,5)$, we can evaluate $ \nabla f (1,3,5)= \langle 1,18,-10\rangle.$

This vector points at the direction of maximum increase of our function at $(1,3,5).$

  • 6
    $\begingroup$ Good explanation! One question, if you turn the function f into a vector, and lets say the function f only accepts one variable. Will the vector then only contain one partial derivative? Likewise if the function requires 4 variables, the vector would then contain 4 partial derivatives; each partial derivative with respect to each of their own variable. Right? $\endgroup$ Mar 27 '18 at 14:09
  • 2
    $\begingroup$ Correct in both situations. $\endgroup$ Mar 27 '18 at 14:24
  • 2
    $\begingroup$ Just to leave no room for misunderstandings, maybe you should write $\nabla f(x,y,z)$ and $\nabla f(1,3,5)$ instead of just $\nabla f$ in the last two lines. $\endgroup$
    – Muschkopp
    Mar 27 '18 at 15:17
  • $\begingroup$ Good Remark. Thanks. $\endgroup$ Mar 27 '18 at 15:31
  • 1
    $\begingroup$ @Muschkopp I edited my solution. $\endgroup$ Mar 27 '18 at 15:40

Nabla is a vector whose components are operators. In the three-dimensional case you quote, $\nabla=(\partial_x,\partial_y,\partial_z)$. It is not a vector in the usual sense (of vectors in $\mathbb R^3$), but it is a very convenient abuse of notation.

The example given in the question gives a convenient way to write the gradient of a function $f:\mathbb R^3\to\mathbb R$ as $$ \nabla f(x,y,z) = (\partial_xf(x,y,z),\partial_yf(x,y,z),\partial_zf(x,y,z)). $$ As it turns out, this kind of a derivative is useful.

If you have a function $g:\mathbb R^3\to\mathbb R^3$, there are two typical derivatives you will need. One of them is the divergence, which is the scalar quantity $\partial_xg_x(x,y,z)+\partial_yg(x,y,z)+\partial_zg(x,y,z))$. It is convenient to write this as $$ \nabla\cdot g(x,y,z), $$ since the formula does indeed look like an inner product of the vector $g=(g_x,g_y,g_z)$ and our $\nabla$.

The other one is the curl, which is given in terms of components as $$ (\partial_yg_z-\partial_zg_y,\partial_zg_x-\partial_xg_z,\partial_xg_y-\partial_yg_x). $$ (I omit the arguments for brevity.) This one looks like a cross product, and it is indeed typical to write it as $\nabla\times g(x,y,z)$.

The point is that there are these three basic instances where it is convenient to think of $\nabla$ as a vector of operators, even if such objects aren't studied in general.

  • 5
    $\begingroup$ Deserves more upvotes. That it's a convenient abuse of notation is an absolutely vital insight to anyone new to the operations. $\endgroup$
    – jpmc26
    Mar 27 '18 at 22:07
  • 3
    $\begingroup$ To give the common thread of the divergence, gradient, and curl: the "abuse of notation" here is that "multiplying" an operator with a function (assuming they have the same scoped variables, like $\partial_x$ matching with $f(x)$) is treated the same as applying the operator to the function, so that $\partial_x f(x)$ becomes $f^\prime(x)$. If you think of the multiplication that way, then the use of the three different products for the three kinds of derivatives becomes very straightforward. $\endgroup$ Mar 28 '18 at 11:46
  • 2
    $\begingroup$ @J.M.isnotamathematician, even more so, multiplication is written by just sticking the symbols together (or back-to-back), which just so happens to also be how the partial derivative is used. $ \partial_x $ multiplied by $ f(x) $ is $ \partial_x f(x) $ in the same way $ a $ times $ b $ is $ ab $. $\endgroup$
    – ilkkachu
    Mar 28 '18 at 20:43

How you've described it, it's used as the gradient of a function in multivariable calculus.

By itself, the nabla can be thought of as a vector of partial derivative operators, and when applied to a multivariable function, it represents the vector of partial derivatives of each component (dot product) and the direction of steepest ascent for some input:

$$\nabla = \begin{bmatrix}\frac{\partial}{\partial x} \\ \frac{\partial}{\partial y} \\ \frac{\partial}{\partial z} \\ \vdots\end{bmatrix}$$

$$\nabla f(x, y, z,\dots) = \begin{bmatrix}\frac{\partial}{\partial x}\,f(x, y, z,\dots) \\ \frac{\partial}{\partial y}\,f(x, y, z,\dots) \\ \frac{\partial}{\partial z}\,f(x, y, z,\dots) \\ \vdots\end{bmatrix}$$

The nabla can be applied to a number of different areas in multivariable calculus, such as divergence or curl. In all these cases, the nabla can be treated like a vector which you can dot or cross with another vector, such as a multivariable function. That said, it is an operator.

  • $\begingroup$ Okay, I think I got it. There is just one thing that confuses me. "∇=⎡⎣⎢⎢⎢⎢⎢⎢⎢∂∂x∂∂y∂∂z⋮⎤⎦⎥⎥⎥⎥⎥⎥⎥" (the first expression you wrote in your answer) Is the partial derivatives in the vector arbitrary? I mean that first expression alone don't mean anything right? Because you haven't mutiplied it with a function (that might accept multivariables). As you did in the second expression in your answer. $\endgroup$ Mar 27 '18 at 14:01
  • 1
    $\begingroup$ @SebastianNielsen That's one way to think about it. The nabla itself can be thought of as a vector of partial derivative operators and can be applied in different contexts (curl, divergence, etc.) but by itself it's nothing but an operator itself. It's not an expression as applying to a function would. Note you can treat it like a vector (dot it with a vector valued multivariable function for the gradient, cross it for divergence, etc.) $\endgroup$
    – Andrew Li
    Mar 27 '18 at 14:09

Conceptually, $\nabla$ is an operator that takes a scalar field (i.e., a smooth, real-valued function defined on some real space – the space is usually $\mathbb{R}^2$ or $\mathbb{R}^3$, but it could also be a higher-dimensional space or a curved manifold $M$) and gives you back a cotangent-vector field. $$ \nabla : (M\to\mathbb{R}) \to (M\to T^\ast(M)) $$ What does that mean? Well, instead of defining these terms directly, let me give the motivation for how they relate to the nabla. The idea behind a gradient (or any derivative, really) is that you want to locally simplify – linearise – a function/field. Let's consider the 1D case first, i.e. $M=\mathbb{R}$. Your function itself may have some whacky wavy course that makes it hard to do much with it, but locally (i.e., when zooming in on any given spot), it will be approximated very well by a simple straight line.

Demo of how the derivative make a tangent that approximates any differentiable function.

This approximation is a truncated Taylor expansion. Its slope is the derivative of the function. So, we have the operator $$\begin{align} \operatorname{approx}_{x_0} &: (\mathbb{R}\to\mathbb{R}) \to (\mathbb{R}\to\mathbb{R}) \\ \operatorname{approx}_{x_0} & f\:(x) = f(x_0) + f'(x_0)\cdot (x-x_0) \end{align}$$

The idea of nabla is to generalise this to higher-dimensional domains.

$$\begin{align} \operatorname{approx}_{x_0} &: (M\to\mathbb{R}) \to (M\to\mathbb{R}) \\ \operatorname{approx}_{x_0} & f\:(x) = f(x_0) + \operatorname{N\!A\!B}(x-x_0) \end{align}$$ There, we need some quantity that can take a local difference vector (a tangent vector in the tangent space $T_{x_0}(M)$) and spit out something similar to... whatever it is that $f$ does when its argument is perturbed by that vector. That quantity is $\operatorname{N\!A\!B}=\nabla f|_{x_0}$.

Generally speaking, this would just again be a function $$ \operatorname{N\!A\!B} : T_{x_0}(M) \to \mathbb{R} $$ ...but because we want the approximation to linearise $f$, it should specifically be a linear functional, i.e. an element of the dual space $T_{x_0}^{\ast}(M)$ of cotangent vectors.

That may sound complicated, but actually it turns out that the dual space of any sensible vector space, certainly of $\mathbb{R}^n$, is basically just $\mathbb{R}^n$ again. Namely, the dual vector $\operatorname{NAB}$ can be equivalently replaced with a scalar product with a vector, and for nabla, that vector contains the directional derivatives as entries. And that's how we usually see the nabla operator: $$ \nabla : (\mathbb{R}^n\to\mathbb{R}) \to (\mathbb{R}^n\to \mathbb{R}^n) $$ which then allows us to write the Taylor expansion as $$\begin{align} \operatorname{approx}_{x_0} &: (\mathbb{R}^n\to\mathbb{R}) \to (\mathbb{R}^n\to\mathbb{R}) \\ \operatorname{approx}_{x_0} & f\:(x) = f(x_0) + \nabla f|_{x_0}\cdot (x-x_0) \end{align}$$

  • 1
    $\begingroup$ Essentially $\nabla f$ can be seen as the result of raising an index of $\mathrm df$ $\endgroup$ Sep 11 '20 at 9:58

It is short-hand for the operator (taking the 3D case):

$\nabla:=\textbf{i}\frac{\partial}{\partial x} + \textbf{j}\frac{\partial}{\partial y} + \textbf{k}\frac{\partial}{\partial z}$

Where $\bf{i}$, $\bf{j}$, and $\bf{k}$ are the unit vectors along the axis. Now the dot and cross operations are also short-hand and are labelled as such because they act on vectors in a similar fashion that the respective products do.

For neural networks, the cost function $C$ is what is known as a "scalar field". In simple terms, it is a function that takes in many inputs (or vectors) and spits out just a real number. Some other relatable, real-world examples of this are for example the temperature in a room $T(x,y,z)$ and the elevation of the ground on a mountainous region $h(x,y)$ which vary depending on position (a vector) and give you a fixed number (temperature or elevation).

Now in order to perform gradient descent, here are some things to note:

Given scalar $C(\textbf{x})$, $\nabla C = \sum_\textbf{i}{\frac{\partial C}{\partial x_\textbf{i}}\textbf{i}}$ is a vector. This vector ALWAYS points "uphill", so naturally $-\nabla C$ always points "downhill".

So now we answer the question, "In order to move downhill from my current location, which direction should I move to?" Now we know from the previous fact that the downhill direction is $-\nabla C(\textbf{x}_n)$ from our current location $\textbf{x}_n$ therefore we can say that if we take a step and arrive at position $\textbf{x}_{n+1}$, we are guaranteed to descend if we follow the rule $\textbf{x}_{n+1}=\textbf{x}_{n} - \nabla C(\textbf{x}_{n})$. Which is the recursive formula for gradient descent that you have probably seen already but the gradient term was scaled by a very small value referred to as the "learning rate". What this does is make the process take smaller steps in the given direction in order to minimise the chances that it runs past the minimum converging better and not oscillate around the minimum.

Now keep in mind that when working with such algorithms, it is very common to see the implementation of heuristic techniques in order to lessen the processing power requirement. For example:

A common cost function is $C=(y(x)-y_o)^2$ whose derivative is $C'=2(y(x)-y_o)y'(x)$. Since this will eventually get scaled down by the learning rate anyway, the factor of 2 (or any other constant scalar) is usually omitted since it does not contain any information about the direction downhill.


The $\nabla$ is a symbol for the differentiation of a function $f: \mathbb{R}^n \to \mathbb{R}$ for some positive integer $n$. (The domain of $f$ can also be an open subset of $\mathbb{R}^n$.) Because the derivative of such an $f$ is another function which is defined on $\mathbb{R}^n$ and which maps into $\mathbb{R}^n$, this operator maps functions of type $\mathbb{R}^n \to \mathbb{R}$ to functions of type $\mathbb{R}^n \to \mathbb{R}^n$.

For $\mathbb{R}^n \to \mathbb{R}$ functions, that is, whose target set is a one-dimensional set, the derivative is also called gradient.

The way to compute such a derivative is to differentiate with respect to every variable of $f$, and put the results into successive coordinates of the result vector. In a point of the domain of $f$, say in $(x_1,x_2,\dots,x_n)\in\mathbb{R}^n$, the derivative is $$(\partial_1 f(x_1,x_2,\dots,x_n),\partial_2 f(x_1,x_2,\dots,x_n),\dots,\partial_n f(x_1,x_2,\dots,x_n)).$$ Another way of writing this is $$(\partial_{x_1} f(x_1,x_2,\dots,x_n), \partial_{x_2} f(x_1,x_2,\dots,x_n),\dots,\partial_{x_n} f(x_1,x_2,\dots,x_n)).$$ This derivative is denoted by $\nabla f(x_1,x_2,\dots,x_n)$. Just as in elementary calculus, it's also fine to denote the gradient by the prime: $f'(x_1,x_2,\dots,x_n)$. Like I said, to every $(x_1,x_2,\dots,x_n)$, it associates $n$ values. (But to use nabla, the function must go into $\mathbb{R}$, that is, into a one-dimensional space, whereas with prime, it can go anywhere.)

By realising that this is true for any such function $f$, people often drop $f(x_1,x_2,\dots,x_n)$ from the formulae above to succintly write what is now mainly a formal equality: $$\nabla=(\partial_1,\partial_2,\dots,\partial_n)=(\partial_{x_1}, \partial_{x_2},\dots,\partial_{x_n}).$$ (I say formal because one doesn't normally talk about vectors of operators.)

$\nabla f(x_1,x_2,\dots,x_n)$ points in the direction where $f$ increases most steeply in $(x_1,x_2,\dots,x_n)$, and its length is the slope in that direction (the steeper the function, the greater the derivative). It's also true that the negative of $\nabla f(x_1,x_2,\dots,x_n)$, $-\nabla f(x_1,x_2,\dots,x_n)$ points in the direction where $f$ decreases most steeply in $(x_1,x_2,\dots,x_n)$. In your neural networks application, the optimisation algorithm always wants to go in the direction where the cost decreases the most. The algorithm doesn't see the cost globally, only in single points, it has to make a local decision, and going down the steepest slope is the best one can do.

If you want to know the directional derivative of $f$ in $(x_1,x_2,\dots,x_n)$ in the direction of $(v_1,v_2,\dots,v_n)$, then it happens to be $$\nabla f(x_1,x_2,\dots,x_n)\cdot (v_1,v_2,\dots,v_n),$$ which is $$\sum_{i=1}^n \partial_i f(x_1,x_2,\dots,x_n)\, v_i.$$ If, as customary, points of $\mathbb{R}^n$ are written as column vectors, then the gradient $\nabla f(x_1,x_2,\dots,x_n)$ is a row vector. Actually, the gradient is a linear operator in every point $(x_1,x_2,\dots,x_n)$. Linear operators can be identified with matrices, and this one is identified with a matrix of size $1\times n$. Computing the above directional derivative is a matrix‒vector multiplication, and this is why it's important to think of the gradient as a row, not a column vector.

How linear operators enter the picture is explained by the notion of the Fréchet derivative.


Departing a little from the other very good answers here.

Strictly speaking, nabla is the name of the typographical glyph, the upside down triangle: just a symbol on paper, meaning whatever the author intends it to mean. The name comes from the glyph's resemblance to an old fashioned harp. But, yes, as all the other answers say, the nabla glyph is by far most commonly used to represent assorted derivative operators in vector calculus. Specifically, in the example provided, it is being used to represent the gradient operation on a scalar function: given a scalar function, it outputs a vector that points in the direction of fastest increase. The wikipedia page for the nabla symbol covers those operators well, as do the other answers here.

It's worth noting that when reading the symbol in the context of vector calculus, it is usually pronounced "del", as in "del C" for the gradient of the function C or "del cross V" for the curl of the function V, etc. People sometimes pronounce it "nabla" in this context, but again, strictly speaking, nabla is the name of the glyph, not the mathematical operation. Similarly, people usually pronounce the asperand glyph @ as "at", not "asperand", and pronounce the ampersand glyph & as "and", not "ampersand", unless they are actually referring to the glyph itself instead of its semantic usage.

  • 1
    $\begingroup$ I’d pronounce '@' as “each,” but then I’m old-fashioned. $\endgroup$
    – amd
    Mar 28 '18 at 8:25

$∇$ is an operator, which takes a scalar function $f$ and turns it into a vector $∇f$ pointing to the direction in which $f$ increases.

Example: in physics you have scalar fields. The temperature is a scalar field: it is a scalar value that varies depending on the position in your room. Apply the $∇$ operator and for every position in your room, you will have a vector pointing in the warmer direction. In winter, all the vector will usually point in the direction of the main heat source of your room: your radiator.


Not the answer you're looking for? Browse other questions tagged or ask your own question.