Linear Function Approximation

Imagine an agent learning to evaluate chess positions, or a thermostat learning to predict room temperature from sensor readings. In both cases the state space is effectively infinite or astronomically large. So a lookup table mapping each state to a value is impossible to store. It is also impossible to learn from sparse experience. The agent must instead generalize. It needs to guess the value of states it has never visited. It does this based on similarity to states it has seen. Linear function approximation is the oldest, simplest, and still most analyzable tool for this generalization problem. It remains the backbone against which every neural-network-based Deep Q-Networks method is implicitly compared. The core move is to describe each state (or state-action pair) by a fixed vector of numerical features. The value function is then represented as a weighted sum of those features. Learning then means adjusting a small vector of weights, rather than filling in an enormous table. This single change transforms reinforcement learning from a bookkeeping problem into a genuine statistical estimation problem. It is the reason Temporal-Difference Learning: TD(0) can scale from toy gridworlds to problems with continuous or combinatorially large state spaces. The big picture is that linear approximation buys generalization and memory efficiency. The cost is representational power and some theoretical guarantees. With a table, TD learning provably converges to the true value function under standard conditions. With function approximation, convergence is only guaranteed under specific structural assumptions. Combining function approximation, bootstrapping, and off-policy learning can actually diverge. This phenomenon is known as the deadly triad. Understanding linear approximation precisely is essential preparation for more general methods. This includes knowing where its guarantees come from and where they break. It prepares readers for semi-gradient methods and deep RL architectures built on top of it. This article develops the linear architecture from first principles. It derives the gradient and semi-gradient TD update. It proves a convergence guarantee for on-policy linear TD(0). It walks through a worked numerical trace. Finally, it surveys the classic failure modes that motivate later, more robust methods.

Key takeaways
  • Linear function approximation represents v^(s,w)=w⊤x(s)\hat v(s,\mathbf w) = \mathbf w^\top \mathbf x(s), a dot product of learned weights and hand- or learned-designed features.
  • It replaces a table of ∣S∣|\mathcal S| entries with a weight vector of size d≪∣S∣d \ll |\mathcal S|, enabling generalization to unseen states.
  • The semi-gradient TD(0) update adjusts weights using the TD error times the feature vector, ignoring the dependence of the bootstrap target on the weights.
  • On-policy linear TD(0) provably converges to a well-characterized fixed point, with error bounded relative to the best possible linear approximation.
  • Feature design (tile coding, radial basis functions, polynomials, Fourier bases) determines what generalization is even possible — the algorithm cannot fix a bad representation.
  • Off-policy training, bootstrapping, and function approximation together can cause divergence — the deadly triad — motivating later corrections like gradient-TD methods.
The core insight

Representing values as w⊤x(s)\mathbf w^\top \mathbf x(s) turns learning into adjusting a handful of weights, letting experience at one state update predictions at every state that shares its features.

The idea

In tabular reinforcement learning, the value function vπ(s)v_\pi(s) is stored as one independent number per state. Function approximation instead posits a parametric family of functions v^(⋅,w)\hat v(\cdot, \mathbf w), indexed by a weight vector w∈Rd\mathbf w \in \mathbb R^d, and asks the learning algorithm to find good weights rather than good table entries. Linear function approximation is the special case where the approximation is linear in the weights:

v^(s,w)=w⊤x(s)=∑i=1dwi xi(s),\hat v(s, \mathbf w) = \mathbf w^\top \mathbf x(s) = \sum_{i=1}^d w_i \, x_i(s),

where x(s)=(x1(s),…,xd(s))⊤\mathbf x(s) = (x_1(s), \dots, x_d(s))^\top is a feature vector representing state ss. The features are fixed, hand-designed (or otherwise pre-computed) functions of the raw state; only the weights w\mathbf w are learned. This is distinct from nonlinear approximators such as neural networks, where the mapping from state to features is itself learned jointly with the output weights. The appeal of linearity is twofold. First, the approximation's gradient with respect to the weights is simply the feature vector itself,

∇wv^(s,w)=x(s),\nabla_{\mathbf w} \hat v(s, \mathbf w) = \mathbf x(s),

independent of w\mathbf w. This makes gradient-based updates trivial to write down and analyze. Second, because the objective (mean squared value error, weighted by the on-policy state distribution) is a quadratic function of w\mathbf w when the target is fixed, the associated optimization landscape has a single global optimum with no spurious local minima — a property that is lost the moment the features themselves are learned nonlinearly. Feature construction is where domain knowledge enters. Classic choices include polynomial features (products of state coordinates up to some degree), tile coding (a form of coarse coding using multiple overlapping binned grids, each grid shifted slightly from the others), radial basis functions (Gaussian bumps centered at prototype states), and the Fourier basis (cosine features at increasing frequencies). Each induces a different notion of "similarity" between states — two states with similar feature vectors will necessarily be assigned similar values, whether or not that similarity is appropriate for the task. This is the central tradeoff of linear approximation: it is exactly as good as the features fed into it, and no amount of clever weight-tuning can compensate for a representation that cannot express the true value function.

How it works

The learning target for prediction under a fixed policy π\pi is to find w\mathbf w minimizing the Mean Squared Value Error,

VE‾(w)=∑s∈Sμ(s)[vπ(s)−v^(s,w)]2,\overline{VE}(\mathbf w) = \sum_{s \in \mathcal S} \mu(s) \big[ v_\pi(s) - \hat v(s, \mathbf w) \big]^2,

where μ(s)\mu(s) is the fraction of time spent in state ss under the behavior policy (the on-policy distribution when learning on-policy). Since vπv_\pi is unknown, we cannot compute this loss directly; instead we use sampled transitions and bootstrap estimates, exactly as in tabular TD(0), but now update a shared weight vector using stochastic gradient descent.

Monte Carlo with linear approximation. If we had the true return GtG_t as an unbiased target, the update is ordinary stochastic gradient descent on squared error:

w←w+α[Gt−v^(St,w)]∇wv^(St,w)=w+α[Gt−w⊤x(St)] x(St).\mathbf w \leftarrow \mathbf w + \alpha \big[ G_t - \hat v(S_t, \mathbf w) \big] \nabla_{\mathbf w}\hat v(S_t, \mathbf w) = \mathbf w + \alpha \big[ G_t - \mathbf w^\top \mathbf x(S_t)\big]\, \mathbf x(S_t).

This is a true gradient step because GtG_t does not depend on w\mathbf w.

TD(0) with linear approximation. TD(0) instead bootstraps, using Rt+1+γv^(St+1,w)R_{t+1} + \gamma \hat v(S_{t+1}, \mathbf w) as the target. Crucially, this target does depend on w\mathbf w, but the standard algorithm ignores that dependency and treats the target as fixed when differentiating — hence the name semi-gradient TD(0):

δt=Rt+1+γ w⊤x(St+1)−w⊤x(St),\delta_t = R_{t+1} + \gamma\, \mathbf w^\top \mathbf x(S_{t+1}) - \mathbf w^\top \mathbf x(S_t),
w←w+α δt x(St).\mathbf w \leftarrow \mathbf w + \alpha\, \delta_t\, \mathbf x(S_t).

This is not gradient descent on any fixed objective (it is a semi-gradient), yet under on-policy sampling and diminishing step sizes it converges — to a specific, well-understood fixed point derived below, not to the minimizer of VE‾\overline{VE} itself. ``` Algorithm: Semi-Gradient TD(0) for Policy Evaluation with Linear Function Approximation Input: policy π to evaluate feature function x : S → R^d step size α ∈ (0, 1], discount factor γ ∈ [0, 1] Initialize weight vector w ∈ R^d arbitrarily (e.g., all zeros) for each episode: initialize S (first state of episode) while S is not terminal: A ← action given by π(·|S) take action A, observe reward R and next state S' if S' is terminal: target ← R # no bootstrap term else: target ← R + γ dot(w, x(S')) δ ← target − dot(w, x(S)) # TD error w ← w + α δ x(S) # semi-gradient update S ← S' return w ``` The pseudocode is deliberately close to tabular TD(0): the table lookup `V[S]` is replaced by `dot(w, x(S))`, and the tabular update — which changes exactly one table entry — is replaced by an update that nudges every* weight touched by the nonzero components of x(S)\mathbf x(S). If features are sparse (e.g., tile coding, where a fixed small number of tiles are active per state), this update touches only O(k)O(k) weights per step, where kk is the number of active features, regardless of dd. Extending to control (estimating qπq_\pi or an optimal policy) replaces v^(s,w)\hat v(s,\mathbf w) with q^(s,a,w)=w⊤x(s,a)\hat q(s,a,\mathbf w) = \mathbf w^\top \mathbf x(s,a) and follows the same semi-gradient recipe for SARSA or Q-learning, using an ε\varepsilon-greedy policy derived from q^\hat q for action selection. The weight update becomes w←w+αδt x(St,At)\mathbf w \leftarrow \mathbf w + \alpha \delta_t\, \mathbf x(S_t, A_t) with δt\delta_t built from either the SARSA target (on-policy) or the max-Q target (off-policy, and hence more fragile under function approximation).

Figure
Linear architecture: features feed a single layer of weights into a scalar value
State s (raw, e.g. position & velocity) s = (p, v, ...) feature map x(·) x₁(s) tile A x₂(s) tile B x₃(s) RBF center x₄(s) bias = 1 ⋮ (d features total) w₁, w₂, w₃, w₄ … Σ v̂(s,w) v̂(s,w) = w · x(s) = Σᵢ wᵢ xᵢ(s) ∇w v̂(s,w) = x(s) (gradient independent of w) Only weights with nonzero xᵢ(s) are updated each step.

Complexity & correctness

Time and space complexity. Storing the weight vector requires O(d)O(d) space, versus O(∣S∣)O(|\mathcal S|) for a table — decisive when ∣S∣|\mathcal S| is combinatorially large or continuous, since dd is chosen by the designer independent of state-space size. Each TD(0) step computes x(St)\mathbf x(S_t), x(St+1)\mathbf x(S_{t+1}), two dot products, and an update — all O(d)O(d) in the dense case. With sparse binary features such as tile coding, where exactly kk features are active per state (a small constant, e.g. k=8k=8 tiles), the dot products and updates cost O(k)O(k) per step, independent of dd, because only the active components need be touched. This is why tile coding scales to dd in the millions in practice: memory is dominated by the weight array, but per-step compute stays bounded by kk.

Correctness for on-policy linear TD(0). Unlike the tabular case, linear TD(0) does not converge to the true value function vπv_\pi in general, because vπv_\pi may not lie in the span of the chosen features. Instead, on-policy linear TD(0) with diminishing step sizes converges (with probability 1, under standard stochastic-approximation conditions on the step-size sequence and an irreducible, aperiodic Markov chain induced by π\pi) to the unique fixed point wTD\mathbf w_{TD} satisfying

A wTD=b,\mathbf A \, \mathbf w_{TD} = \mathbf b,

where

A=Eμ[x(St)(x(St)−γ x(St+1))⊤],b=Eμ[Rt+1 x(St)].\mathbf A = \mathbb E_\mu\big[\mathbf x(S_t)\big(\mathbf x(S_t) - \gamma\, \mathbf x(S_{t+1})\big)^\top\big], \qquad \mathbf b = \mathbb E_\mu\big[R_{t+1}\, \mathbf x(S_t)\big].

A key structural fact — proved by Tsitsiklis and Van Roy (1997) — is that under the on-policy distribution μ\mu, the matrix A\mathbf A is positive definite (in the relevant subspace), which guarantees this linear system has a unique solution and that the associated ODE (the expected direction of the stochastic update) is globally stable. The proof sketch: A=X⊤D(I−γP)X\mathbf A = \mathbf X^\top D (I - \gamma P) \mathbf X where X\mathbf X has rows x(s)⊤\mathbf x(s)^\top, D=diag(μ)D = \mathrm{diag}(\mu), and PP is the policy's transition matrix; a classical result shows D(I−γP)D(I-\gamma P) is positive definite whenever μ\mu is the stationary distribution of PP, and this property is inherited by X⊤D(I−γP)X\mathbf X^\top D(I-\gamma P)\mathbf X for any full-rank feature matrix X\mathbf X. Positive definiteness is precisely what fails when the sampling distribution is off-policy, which is the root cause of divergence examples in the deadly triad.

Error bound. The fixed point wTD\mathbf w_{TD} is not the projection minimizer of VE‾\overline{VE}, but it is provably close to it:

VE‾(wTD)≤11−γmin⁡wVE‾(w).\overline{VE}(\mathbf w_{TD}) \le \frac{1}{1-\gamma} \min_{\mathbf w} \overline{VE}(\mathbf w).

That is, TD's fixed-point error is at most a factor 11−γ\frac{1}{1-\gamma} worse than the best possible linear approximation of vπv_\pi under the chosen features — a guarantee unavailable to naive bootstrapping schemes without this structural analysis. As γ→1\gamma \to 1 this bound loosens considerably, reflecting the well-known difficulty of long-horizon credit assignment with bootstrapping.

Honest tradeoffs. These guarantees hinge on three things simultaneously: (1) on-policy sampling, (2) linear architecture, (3) the specific semi-gradient TD update. Change any one — e.g., train off-policy, or use a nonlinear network, or use a different bootstrapping scheme — and the clean positive-definiteness argument no longer applies; convergence must be re-established (or may provably fail), which is exactly the subject of the deadly triad and of corrective algorithms like gradient-TD (GTD2, TDC).

Worked example

Consider a tiny 5-state random walk: states S1,…,S5S_1, \dots, S_5 in a line, terminal states at both ends (reward 00 on the left exit, reward 11 on the right exit), and equiprobable left/right moves — the classic tabular TD(0) benchmark, now equipped with linear features. Use a simple aggregation feature scheme: group the five states into two feature "bins" for illustration —

x(S1)=x(S2)=(1,0)⊤,x(S3)=(0.5,0.5)⊤,x(S4)=x(S5)=(0,1)⊤.\mathbf x(S_1) = \mathbf x(S_2) = (1, 0)^\top, \qquad \mathbf x(S_3) = (0.5, 0.5)^\top, \qquad \mathbf x(S_4) = \mathbf x(S_5) = (0, 1)^\top.

This deliberately imperfect feature set cannot represent the true values exactly (true values under random walk dynamics are 16,26,36,46,56\tfrac16,\tfrac26,\tfrac36,\tfrac46,\tfrac56), which lets us see the semi-gradient update converge to a biased but bounded solution rather than the exact answer. Initialize w=(0,0)\mathbf w = (0,0), α=0.1\alpha = 0.1, γ=1\gamma = 1. Trace one episode S3→S4→S5→terminal (right, reward 1)S_3 \to S_4 \to S_5 \to \text{terminal (right, reward 1)}:

StepStS_tx(St)\mathbf x(S_t)St+1S_{t+1}Rt+1R_{t+1}v^(St)\hat v(S_t)v^(St+1)\hat v(S_{t+1})δt\delta_tw\mathbf w update
1S3S_3(0.5,0.5)(0.5,0.5)S4S_4000000+0−0=00 + 0 - 0 = 0no change: w=(0,0)\mathbf w=(0,0)
2S4S_4(0,1)(0,1)S5S_50000000no change: w=(0,0)\mathbf w=(0,0)
3S5S_5(0,1)(0,1)terminal100(n/a, terminal)1+0−0=11 + 0 - 0 = 1w+=0.1⋅1⋅(0,1)=(0,0.1)\mathbf w \mathrel{+}= 0.1\cdot 1\cdot(0,1) = (0,0.1)

After this single episode w=(0,0.1)\mathbf w = (0, 0.1). Note that step 3's update changed w2w_2 only, because x(S5)=(0,1)\mathbf x(S_5) = (0,1) has a zero first component — exactly the sparse-update behavior predicted by the complexity analysis. On the next episode, suppose the walk visits S3→S2→S1→terminal (left, reward 0)S_3 \to S_2 \to S_1 \to \text{terminal (left, reward 0)}:

StepStS_tx(St)\mathbf x(S_t)v^(St)=w⊤x(St)\hat v(S_t)=\mathbf w^\top\mathbf x(S_t)St+1S_{t+1}Rt+1R_{t+1}v^(St+1)\hat v(S_{t+1})δt\delta_tnew w\mathbf w
1S3S_3(0.5,0.5)(0.5,0.5)0.5(0)+0.5(0.1)=0.050.5(0)+0.5(0.1)=0.05S2S_20000+0−0.05=−0.050+0-0.05=-0.05(0,0.1)+0.1(−0.05)(0.5,0.5)=(−0.0025, 0.0975)(0,0.1)+0.1(-0.05)(0.5,0.5) = (-0.0025,\,0.0975)
2S2S_2(1,0)(1,0)−0.0025-0.0025S1S_10000−(−0.0025)=0.00250 - (-0.0025) = 0.0025(−0.0025,0.0975)+0.1(0.0025)(1,0)=(−0.00225,0.0975)(-0.0025,0.0975)+0.1(0.0025)(1,0)=(-0.00225,0.0975)
3S1S_1(1,0)(1,0)−0.00225-0.00225terminal0n/a0−(−0.00225)=0.002250 - (-0.00225)=0.00225(−0.00225,0.0975)+0.1(0.00225)(1,0)≈(−0.002,0.0975)(-0.00225,0.0975)+0.1(0.00225)(1,0) \approx (-0.002,0.0975)

Over many more episodes, w\mathbf w converges toward the fixed point wTD\mathbf w_{TD} solving Aw=b\mathbf A \mathbf w = \mathbf b for this feature map and Markov chain — a pair of values that best fit each aggregated bin, biased slightly by the bootstrapping and averaging inherent to TD, but with error provably within the 11−γ\frac{1}{1-\gamma} factor of the best two-parameter linear fit to the true random-walk values. This demonstrates concretely how coarse features force nearby states to share value estimates (S1S_1 and S2S_2 are forced identical, likewise S4S_4 and S5S_5), trading exactness for a drastically smaller parameter count — 2 weights instead of 5 table entries — and this ratio only becomes more favorable as state spaces grow.

Common pitfalls & traps

PitfallWhy it happensFix
Forgetting the bias/constant featureWithout an always-on feature (xi(s)=1x_i(s)=1 for all ss), the approximator is forced through the origin, limiting expressivenessAlways include a constant feature unless features already span an affine family
Treating semi-gradient as true gradientThe bootstrap target depends on w\mathbf w; differentiating it fully gives a different (and empirically worse-behaved) "residual gradient" algorithmUnderstand that ignoring the target's w\mathbf w-dependence is intentional and is what makes TD's fixed point meaningful
Using highly correlated or redundant featuresMakes A\mathbf A near-singular, causing slow, unstable, or oscillating convergence even though it's theoretically still positive semi-definiteUse tile coding / RBFs with good coverage, check conditioning, consider regularization
Applying linear TD(0) off-policy without correctionOff-policy sampling breaks the positive-definiteness of A\mathbf A, and the deadly triad (function approximation + bootstrapping + off-policy) can make weights diverge to infinityUse importance sampling with gradient-TD methods (GTD2, TDC), or switch to on-policy training
Step size too large relative to feature scaleBecause the update is αδtx(St)\alpha \delta_t \mathbf x(S_t), large or unnormalized feature magnitudes amplify effective step size, causing divergenceNormalize features, tune α\alpha relative to ∥x(s)∥2\|\mathbf x(s)\|^2 (e.g., set α=c/(number of active features)\alpha = c / (\text{number of active features}) for tile coding)
Assuming convergence to vπv_\piLinear TD(0) converges to the TD fixed point, not the true value function, whenever vπv_\pi is not representable by the chosen featuresReport/expect the 11−γ\frac{1}{1-\gamma}-bounded fixed point error, not exact recovery

Pioneers & history

Origins · 1 minRichard S. Sutton and how this was discovered
RS
Richard S. Sutton
1957–present · Developed temporal-difference learning and, with Andrew Barto, the modern framework of reinforcement learning at the University of Massachusetts Amherst and later the University of Alberta

Sutton's early work formalized TD learning and, together with collaborators including Doina Precup and Satinder Singh, drove the theoretical analysis of function approximation in RL, including convergence proofs and the identification of divergence risks that motivated gradient-TD methods.

History
1988
Sutton introduces TD(λ) and demonstrates linear function approximation on random-walk prediction tasks.
1994
Tsitsiklis and Van Roy analyze convergence of TD(0) with linear function approximation, establishing the on-policy fixed-point theory.
1995
Baird publishes a counterexample showing divergence of off-policy TD with linear function approximation, crystallizing the deadly-triad concern.
1997
Tsitsiklis and Van Roy publish the full convergence and error-bound analysis for linear TD, the 11−γ\frac{1}{1-\gamma} bound used throughout this article.
2009
Sutton, Maei, and colleagues introduce gradient-TD methods (GTD2, TDC) achieving convergence guarantees under off-policy sampling with linear function approximation.

Where this matters

Linear function approximation underlies decades of applied reinforcement learning before the deep learning era, and remains the workhorse whenever interpretability, sample efficiency, or provable convergence matter more than raw representational capacity. Classic large-scale successes include Tesauro's TD-Gammon-style value learning (originally with neural nets, but linear variants with hand-designed backgammon features perform competitively), robotic control with tile-coded state spaces (as in early Sarsa and Q-learning applications to mountain-car and acrobot benchmarks), and industrial process control where engineers can hand-design physically meaningful features (position, velocity, error terms) and need auditable, stable weight updates. Linear methods with sparse coarse-coded features (tile coding, radial basis functions) remain standard baselines in continuous-control benchmarking because they train in milliseconds and their convergence properties are mathematically characterized, unlike black-box deep networks. The positive-definiteness argument developed here for on-policy linear TD(0) is also the conceptual seed for gradient-TD methods and later analyses of semi-gradient methods with function approximation more broadly, and the divergence risks identified in the linear, off-policy setting directly foreshadow the deadly triad, the central cautionary framework used to explain instability in deep reinforcement learning systems such as DQN (which needed target networks and experience replay specifically to blunt these effects).

Ask the tutor: How does the positive-definiteness of matrix A break down specifically under off-policy sampling, and how do gradient-TD methods like TDC restore convergence?

Why use linear function approximation instead of a full lookup table?

Lookup tables require one independent parameter per state, which is infeasible when the state space is very large or continuous, and they cannot generalize — visiting one state teaches you nothing about neighboring states. Linear function approximation represents the value as a dot product of weights and features, so the parameter count is chosen by the designer (independent of state-space size) and updating the weights after visiting one state automatically shifts predictions for every other state sharing similar features. This enables learning from far less experience than tabular methods require, at the cost of only being as accurate as the chosen feature representation allows.

Does linear TD(0) converge to the true value function v_π?

Not in general. It converges (under on-policy sampling with diminishing step sizes) to a specific fixed point wTD\mathbf w_{TD} solving Aw=b\mathbf A \mathbf w = \mathbf b, which equals the true value function only if vπv_\pi happens to lie exactly in the span of the chosen features. Tsitsiklis and Van Roy proved that this fixed point's mean squared value error is at most 11−γ\frac{1}{1-\gamma} times the error of the best possible linear approximation to vπv_\pi — a strong but not perfect guarantee. The gap between wTD\mathbf w_{TD} and the true vπv_\pi is entirely attributable to representational limits of the feature set, not to a flaw in the learning rule itself.

What is the difference between semi-gradient TD(0) and "true gradient" TD(0)?

The TD(0) target Rt+1+γv^(St+1,w)R_{t+1} + \gamma \hat v(S_{t+1}, \mathbf w) depends on the current weights through the bootstrapped next-state value. A fully correct gradient of the squared TD error would differentiate through this dependence as well, producing an extra term. Semi-gradient TD(0) deliberately omits that term, treating the target as a constant when computing the gradient. Empirically and theoretically, this "incorrect" simplification behaves better in the on-policy case (it is what has the clean Aw=b\mathbf A\mathbf w=\mathbf b fixed-point theory), whereas the theoretically "correct" full gradient method (sometimes called the residual-gradient method) tends to converge more slowly in practice despite stronger convergence guarantees.

How should I choose features for linear function approximation?

Feature choice should encode which states you believe should have similar values. Tile coding (overlapping grids of binary indicator features) gives fast, sparse, easily tunable generalization and is popular in continuous control. Radial basis functions place smooth Gaussian bumps at prototype states, giving smoother generalization at higher computational cost per feature. The Fourier basis represents states as combinations of cosine waves and works well when value functions are smooth over the state space. There is no universally best choice — the guarantee that linear TD(0) is within a 11−γ\frac{1}{1-\gamma} factor of the best linear fit only helps if that best linear fit is itself good, so feature engineering is where most of the real design effort belongs.

What is the deadly triad, and why does it matter for linear methods?

The deadly triad refers to the simultaneous combination of function approximation, bootstrapping (as in TD methods), and off-policy training. Individually each is fine and widely used; combined, they can cause the weight vector to diverge to infinity, as shown by counterexamples such as Baird's star problem, even in the simple linear setting. The root cause is that off-policy sampling can make the key matrix A\mathbf A indefinite rather than positive definite, destroying the stability argument that guarantees on-policy convergence. This risk directly motivated the development of gradient-TD algorithms (GTD2, TDC) that restore convergence guarantees even under off-policy sampling with linear function approximation.

Can linear function approximation be used for control, not just prediction?

Yes. Replacing v^(s,w)\hat v(s,\mathbf w) with an action-value approximator q^(s,a,w)=w⊤x(s,a)\hat q(s,a,\mathbf w) = \mathbf w^\top \mathbf x(s,a) allows semi-gradient SARSA or semi-gradient Q-learning to be run with the same update rule, using ε\varepsilon-greedy action selection derived from the current q^\hat q estimates. On-policy control (semi-gradient SARSA) inherits similar convergence intuitions to on-policy prediction, though the moving target policy complicates a clean fixed-point analysis. Off-policy control (semi-gradient Q-learning) is more fragile and sits squarely in deadly-triad territory, which is one reason deep Q-learning systems require additional stabilizers like target networks and experience replay.

How does linear function approximation relate to deep reinforcement learning?

Deep RL architectures such as DQN can be viewed as linear function approximation applied to the last layer, stacked on top of a nonlinear feature extractor (the earlier network layers) that is trained jointly rather than fixed. This means all the intuitions from linear analysis — the semi-gradient update, the risk of the deadly triad, the sensitivity to feature (representation) quality — still apply, but the convergence guarantees available for fixed linear features generally do not transfer, because the features themselves now shift during training. Studying linear function approximation rigorously is therefore the cleanest way to understand both the promise and the instability risks inherited by its nonlinear, deep-network descendants.

Before this

Where this leads