import%20marimo%0A%0A__generated_with%20%3D%20%220.23.16%22%0Aapp%20%3D%20marimo.App()%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20marimo%20as%20mo%0A%0A%20%20%20%20return%20(mo%2C)%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20METADATA%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%22id%22%3A%20%22loss_optimization%22%2C%0A%20%20%20%20%20%20%20%20%22name%22%3A%20%22Loss%20and%20Optimization%22%2C%0A%20%20%20%20%20%20%20%20%22kind%22%3A%20%22concept%22%2C%0A%20%20%20%20%20%20%20%20%22difficulty%22%3A%20%22intermediate%22%2C%0A%20%20%20%20%20%20%20%20%22status%22%3A%20%22complete%22%2C%0A%20%20%20%20%20%20%20%20%22topics%22%3A%20%5B%22loss_functions%22%2C%20%22optimization%22%5D%2C%0A%20%20%20%20%20%20%20%20%22related_models%22%3A%20%5B%22linear_regression%22%2C%20%22logistic_regression%22%2C%20%22mlp%22%2C%20%22transformer%22%5D%2C%0A%20%20%20%20%20%20%20%20%22prerequisites%22%3A%20%5B%22train_validation_test%22%5D%2C%0A%20%20%20%20%7D%0A%20%20%20%20mo.md(f%22%23%20%7BMETADATA%5B'name'%5D%7D%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20In%20one%20sentence%0A%0A%20%20%20%20The%20loss%20defines%20what%20counts%20as%20a%20training%20mistake%3B%20the%20optimizer%20searches%20for%20parameters%20that%20reduce%20that%20loss.%0A%0A%20%20%20%20%23%23%20Mental%20model%0A%0A%20%20%20%20The%20loss%20draws%20the%20landscape%20and%20the%20optimizer%20chooses%20the%20walking%20strategy.%20A%20perfect%20walker%20still%20reaches%20the%20wrong%20destination%20when%20the%20landscape%20encodes%20the%20wrong%20objective.%0A%0A%20%20%20%20%23%23%20Why%20it%20matters%0A%0A%20%20%20%20Squared%20error%20emphasizes%20large%20residuals%2C%20absolute%20error%20is%20more%20robust%2C%20and%20cross-entropy%20shapes%20probabilities.%20Optimization%20settings%20then%20determine%20whether%20training%20can%20reach%20a%20useful%20solution.%0A%0A%20%20%20%20%23%23%20Experiment%0A%0A%20%20%20%20**Question%3A**%20how%20do%20loss%20shape%20and%20learning%20rate%20change%20the%20behavior%20of%20a%20simple%20fitted%20line%3F%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0A%40app.cell%0Adef%20_()%3A%0A%20%20%20%20import%20numpy%20as%20np%0A%20%20%20%20import%20matplotlib.pyplot%20as%20plt%0A%0A%20%20%20%20residual%20%3D%20np.linspace(-3%2C%203%2C%20300)%0A%20%20%20%20squared%20%3D%20residual%20**%202%0A%20%20%20%20absolute%20%3D%20np.abs(residual)%0A%20%20%20%20delta%20%3D%201.0%0A%20%20%20%20huber%20%3D%20np.where(np.abs(residual)%20%3C%3D%20delta%2C%200.5%20*%20residual%20**%202%2C%20delta%20*%20(np.abs(residual)%20-%200.5%20*%20delta))%0A%0A%20%20%20%20rng%20%3D%20np.random.default_rng(2)%0A%20%20%20%20x%20%3D%20np.linspace(-2%2C%202%2C%2070)%0A%20%20%20%20y%20%3D%201.4%20%2B%202.3%20*%20x%20%2B%20rng.normal(0%2C%200.5%2C%20len(x))%0A%0A%20%20%20%20def%20optimize(learning_rate%2C%20steps%3D80)%3A%0A%20%20%20%20%20%20%20%20intercept%2C%20slope%20%3D%200.0%2C%200.0%0A%20%20%20%20%20%20%20%20losses%20%3D%20%5B%5D%0A%20%20%20%20%20%20%20%20for%20_%20in%20range(steps)%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20error%20%3D%20intercept%20%2B%20slope%20*%20x%20-%20y%0A%20%20%20%20%20%20%20%20%20%20%20%20losses.append(float(np.mean(error%20**%202)))%0A%20%20%20%20%20%20%20%20%20%20%20%20intercept%20-%3D%20learning_rate%20*%202%20*%20np.mean(error)%0A%20%20%20%20%20%20%20%20%20%20%20%20slope%20-%3D%20learning_rate%20*%202%20*%20np.mean(error%20*%20x)%0A%20%20%20%20%20%20%20%20return%20intercept%2C%20slope%2C%20losses%0A%0A%20%20%20%20return%20absolute%2C%20huber%2C%20optimize%2C%20plt%2C%20residual%2C%20squared%2C%20x%2C%20y%0A%0A%0A%40app.cell%0Adef%20_(absolute%2C%20huber%2C%20optimize%2C%20plt%2C%20residual%2C%20squared%2C%20x%2C%20y)%3A%0A%20%20%20%20rates%20%3D%20%5B0.01%2C%200.08%2C%200.7%5D%0A%20%20%20%20runs%20%3D%20%7Brate%3A%20optimize(rate)%20for%20rate%20in%20rates%7D%0A%20%20%20%20fig%2C%20axes%20%3D%20plt.subplots(1%2C%203%2C%20figsize%3D(13%2C%203.8))%0A%20%20%20%20axes%5B0%5D.plot(residual%2C%20squared%2C%20label%3D%22squared%22)%0A%20%20%20%20axes%5B0%5D.plot(residual%2C%20absolute%2C%20label%3D%22absolute%22)%0A%20%20%20%20axes%5B0%5D.plot(residual%2C%20huber%2C%20label%3D%22Huber%22)%0A%20%20%20%20axes%5B0%5D.set(title%3D%22Losses%20value%20the%20same%20residual%20differently%22%2C%20xlabel%3D%22residual%22%2C%20ylabel%3D%22loss%22%2C%20ylim%3D(0%2C%206))%0A%20%20%20%20axes%5B0%5D.legend()%0A%20%20%20%20for%20rate%2C%20(_%2C%20_%2C%20losses)%20in%20runs.items()%3A%0A%20%20%20%20%20%20%20%20axes%5B1%5D.plot(losses%2C%20label%3Df%22learning%20rate%3D%7Brate%7D%22)%0A%20%20%20%20axes%5B1%5D.set_yscale(%22log%22)%0A%20%20%20%20axes%5B1%5D.set(title%3D%22Optimization%20can%20converge%20or%20diverge%22%2C%20xlabel%3D%22step%22%2C%20ylabel%3D%22MSE%22)%0A%20%20%20%20axes%5B1%5D.legend(fontsize%3D8)%0A%20%20%20%20axes%5B2%5D.scatter(x%2C%20y%2C%20alpha%3D0.6)%0A%20%20%20%20for%20rate%2C%20(intercept%2C%20slope%2C%20_)%20in%20runs.items()%3A%0A%20%20%20%20%20%20%20%20if%20abs(intercept)%20%3C%20100%20and%20abs(slope)%20%3C%20100%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20axes%5B2%5D.plot(x%2C%20intercept%20%2B%20slope%20*%20x%2C%20label%3Df%22rate%3D%7Brate%7D%22)%0A%20%20%20%20axes%5B2%5D.set(title%3D%22Parameters%20found%20by%20gradient%20descent%22%2C%20xlabel%3D%22x%22%2C%20ylabel%3D%22target%22)%0A%20%20%20%20axes%5B2%5D.legend(fontsize%3D8)%0A%20%20%20%20plt.tight_layout()%0A%20%20%20%20return%0A%0A%0A%40app.cell(hide_code%3DTrue)%0Adef%20_(mo)%3A%0A%20%20%20%20mo.md(r%22%22%22%0A%20%20%20%20%23%23%20Common%20mistake%0A%0A%20%20%20%20Treating%20training%20loss%20as%20the%20product%20objective%2C%20or%20assuming%20a%20lower%20final%20loss%20always%20means%20better%20deployment%20behavior.%0A%0A%20%20%20%20%23%23%20Diagnosis%0A%0A%20%20%20%20Plot%20the%20loss%20curve%2C%20gradients%2C%20and%20validation%20metrics.%20Check%20for%20divergence%2C%20plateaus%2C%20unstable%20batches%2C%20and%20disagreement%20between%20the%20optimized%20loss%20and%20the%20real%20decision%20cost.%0A%0A%20%20%20%20%23%23%20Practical%20rule%0A%0A%20%20%20%20Choose%20a%20loss%20that%20represents%20the%20mistakes%20you%20care%20about%2C%20then%20tune%20optimization%20only%20to%20solve%20that%20learning%20problem%20reliably.%0A%20%20%20%20%22%22%22)%0A%20%20%20%20return%0A%0A%0Aif%20__name__%20%3D%3D%20%22__main__%22%3A%0A%20%20%20%20app.run()%0A
6da4220c30c9ead4508290bdc0781539