Interpolating Neural Networks
This repo contains the source code for observing double descent phenomena with neural networks in empirical asset pricing data.
Fig. A new double-U-shaped bias-variance risk curve for deep neural networks. (Image source: original paper)
Deep learning models are heavily over-parameterized and can often get to perfect results on training data. In the traditional view, like bias-variance trade-offs, this could be a disaster that nothing may generalize to the unseen test data. However, as is often the case, such “overfitted” (training error = 0) deep learning models still present a decent performance on out-of-sample test data (Refer above figure).
This is likely due to two reasons:
- The number of parameters is not a good measure of inductive bias, defined as the set of assumptions of a learning algorithm used to predict for unknown samples.
- Equipped with a larger model, we might be able to discover larger function classes and further find interpolating functions that have smaller norm and are thus “simpler”.
There are many other explanations of better generalisation such as Smaller Intrinsic Dimension, Heterogeneous Layer Robutness, Lottery Ticket Hypothesis etc. To read more on them in detail, refer Lilian Weng's article.
Usage
In this work, we try to observe double descent phenomena in empirical asset pricing. The observation of double descent is fascinating as financial data are very noisy in comparison to image datasets (good signal to noise ratio).
$ pip install interpolating-neural-networks
Notes:
- There are no regularization terms like weight decay, dropout.
- Each network is trained for a long time to achieve near-zero training risk. The learning rate is adjusted differently for models of different sizes.
Citation
If you find this method and/or code useful, please consider citing
@misc{interpolatingneuralnetworks,
author = {Akash Sonowal, Dr. Shankar Prawesh},
title = {Interpolating Neural Networks in Asset Pricing},
url = {https://github.com/akashsonowal/interpolating-neural-networks},
year = {2022},
note = "Version 0.0.1"
}
Metadata
Release files for interpolating-neural-networks 0.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| interpolating-neural-networks-0.0.2.tar.gz | 12.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| interpolating_neural_networks-0.0.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 25.2 kB
Release files / interpolating-neural-networks-0.0.2.tar.gz
| Download URL | interpolating-neural-networks-0.0.2.tar.gz |
|---|---|
| Size | 12.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4f5a16333a5eeb122d26699e6af2788b4e69d4c1884f222f6e90898fcad0da52
|
|
BLAKE2b-256 checksum How to use checksums |
cfcd07370c3f489a977f8fc4077a777f0a9e69afa1af27a60e4e41c4793f8ecd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.3
|
Release files / interpolating_neural_networks-0.0.2-py3-none-any.whl
| Download URL | interpolating_neural_networks-0.0.2-py3-none-any.whl |
|---|---|
| Size | 13.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c70a94f3726522a81fdbf1afef54b50ed3c3036f4f8de0e07b9d4249b36dab79
|
|
BLAKE2b-256 checksum How to use checksums |
1411fec7deb543ac77f2d7c262cd16b116a0d53d99afad19fce851592d94dfa6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.3
|