\begin{algorithmic}
\Require Data \(\{t^{(i)}, \hat{\mathbf{u}}^{(i)}\}_{i=0}^N\), untrained model \(\mathbf{U}(...; \boldsymbol{\theta})\)\\
\Return Coupling strength(\(k\)), homotopy parameter decrement ratio(\(\kappa\)), number of homotopy steps(\(s\)), epochs per homotopy step(\(n_{epoch}\)), learning rate(\(\eta\))
    \State \(\hat{\mathbf{u}}(t)=CubicSmoothingSpline(\{t^{(i)}, \hat{\mathbf{u}}^{(i)}\}_{i=0}^N)\)
    \Comment{Construct data interpolant}
    \State \(\lambda \gets 1\)
    \Comment Initialize homotopy parameter
    \For{\(s\) in \(0\dots n_{step}-1\)}
        \For{\(epoch\) in \(0\dots n_{epoch}-1\)}
            \State \(\{\mathbf{u}^{(i)}\}_{i=0}^N = ODESolve(\dot{\mathbf{u}} = \mathbf{U}(t, \mathbf{u} ; \boldsymbol{\theta})- \lambda k \mathbf{I}_n(\mathbf{u}-\hat{\mathbf{u}}(t)))\) 
            \Comment{Solve coupled dynamics}
            \State \(\{\tilde{\mathbf{u}}^{(i)}\}_{i=0}^N = ODESolve(\dot{\tilde{\mathbf{u}}} = \mathbf{U}(t, \tilde{\mathbf{u}}; \boldsymbol{\theta}))\)
            \Comment{Also solve uncoupled dynamics}

            \State \(MSE(\boldsymbol{\theta})=\frac{1}{N+1}\sum_i\left|\tilde{\mathbf{u}}^{(i)}(\boldsymbol{\theta})-\hat{\mathbf{u}}^{(i)}\right|^2\)
            
                \If{\(MSE \leq MSE_{best}\)}
                \State \(MSE_{best} \gets MSE\)
                \Comment{Model performance is gauged by uncoupled dynamics error}
                \State \(\boldsymbol{\theta}^* \gets \boldsymbol{\theta}\)
                \Comment{Checkpoint best model parameters}
                \EndIf
                         
            \State \(\mathcal{L}(\boldsymbol{\theta})=\frac{1}{N+1} \sum_i \left|\mathbf{u}^{(i)}(\boldsymbol{\theta}) - \hat{\mathbf{u}}^{(i)} \right|^2\) 
            \Comment{Loss function is calculated using coupled dynamics}
            \State \({\boldsymbol{\theta} \gets OptimizerStep(\eta, \boldsymbol{\theta}, \nabla_{\boldsymbol\theta} \mathcal{L})}\)
        \EndFor
        \State \(\lambda \gets \lambda - \kappa^s/\sum_{s=0}^{n_{steps}-1} \kappa^s\)
        \Comment{Decrease homotopy parameter with power law decrements}
    \EndFor
\Ensure Trained model parameters \(\boldsymbol{\theta}^*\), \(\lambda = 0\)
\end{algorithmic}

\begin{algorithmic}
\Require Data \(\{t^{(i)}, \hat{\mathbf{u}}^{(i)}\}_{i=0}^N\), untrained model \(\mathbf{U}(...; \boldsymbol{\theta})\)\\
\Return Coupling strength(\(k\)), homotopy parameter decrement ratio(\(\kappa\)), number of homotopy steps(\(s\)), epochs per homotopy step(\(n_{epoch}\)), learning rate(\(\eta\))
\State \(\hat{\mathbf{u}}(t)=CubicSmoothingSpline(\{t^{(i)}, \hat{\mathbf{u}}^{(i)}\}_{i=0}^N)\)
\Comment{Construct data interpolant}
\State \(\lambda \gets 1\)
\Comment Initialize homotopy parameter
\For{\(s\) in \(0\dots n_{step}-1\)}
\For{\(epoch\) in \(0\dots n_{epoch}-1\)}
\State \(\{\mathbf{u}^{(i)}\}_{i=0}^N = ODESolve(\dot{\mathbf{u}} = \mathbf{U}(t, \mathbf{u} ; \boldsymbol{\theta})- \lambda k \mathbf{I}_n(\mathbf{u}-\hat{\mathbf{u}}(t)))\)
\Comment{Solve coupled dynamics}
\State \(\{\tilde{\mathbf{u}}^{(i)}\}_{i=0}^N = ODESolve(\dot{\tilde{\mathbf{u}}} = \mathbf{U}(t, \tilde{\mathbf{u}}; \boldsymbol{\theta}))\)
\Comment{Also solve uncoupled dynamics}
\State \(MSE(\boldsymbol{\theta})=\frac{1}{N+1}\sum_i\left|\tilde{\mathbf{u}}^{(i)}(\boldsymbol{\theta})-\hat{\mathbf{u}}^{(i)}\right|^2\)
\If{\(MSE \leq MSE_{best}\)}
\State \(MSE_{best} \gets MSE\)
\Comment{Model performance is gauged by uncoupled dynamics error}
\State \(\boldsymbol{\theta}^* \gets \boldsymbol{\theta}\)
\Comment{Checkpoint best model parameters}
\EndIf
\State \(\mathcal{L}(\boldsymbol{\theta})=\frac{1}{N+1} \sum_i \left|\mathbf{u}^{(i)}(\boldsymbol{\theta}) - \hat{\mathbf{u}}^{(i)} \right|^2\)
\Comment{Loss function is calculated using coupled dynamics}
\State \({\boldsymbol{\theta} \gets OptimizerStep(\eta, \boldsymbol{\theta}, \nabla_{\boldsymbol\theta} \mathcal{L})}\)
\EndFor
\State \(\lambda \gets \lambda - \kappa^s/\sum_{s=0}^{n_{steps}-1} \kappa^s\)
\Comment{Decrease homotopy parameter with power law decrements}
\EndFor
\Ensure Trained model parameters \(\boldsymbol{\theta}^*\), \(\lambda = 0\)
\end{algorithmic}
{
    "title": "homotopy-based training of neuralodes for accurate dynamics discovery",
    "id": "2210.01407",
    "abstract": "neural ordinary differential equations (neuralodes) present an attractive way to extract dynamical laws from time series data, as they bridge neural networks with the differential equation-based modeling paradigm of the physical sciences. however, these models often display long training times and suboptimal results, especially for longer duration data. while a common strategy in the literature imposes strong constraints to the neuralode architecture to inherently promote stable model dynamics, such methods are ill-suited for dynamics discovery as the unknown governing equation is not guaranteed to satisfy the assumed constraints. in this paper, we develop a new training method for neuralodes, based on synchronization and homotopy optimization, that does not require changes to the model architecture. we show that synchronizing the model dynamics and the training data tames the originally irregular loss landscape, which homotopy optimization can then leverage to enhance training. through benchmark experiments, we demonstrate our method achieves competitive or better training loss while often requiring less than half the number of training epochs compared to other model-agnostic techniques. furthermore, models trained with our method display better extrapolation capabilities, highlighting the effectiveness of our method.",
    "categories": "cs.lg math.ds math.oc physics.app-ph",
    "doi": "",
    "created": "2022-10-04",
    "updated": "2024-01-23",
    "authors": [
        "joon-hyuk ko",
        "hankyul koh",
        "nojun park",
        "wonho jhe"
    ],
    "affiliation": [],
    "url": "https://arxiv.org/abs/2210.01407"
}
{
    "ToxicityFilter": {
        "text_to_toxicity_attributes": {
            "neurips_2023.sty": {
                "toxicity_score": 0.010429831,
                "severe_toxicity_score": 0.00096321106,
                "identity_attack_score": 0.003644289,
                "insult_score": 0.007341875,
                "profanity_score": 0.013849284,
                "threat_score": 0.007637825,
                "sexually_explicit_score": 0.010438959,
                "flirtation_score": 0.36732212
            },
            "natbib.sty": {
                "toxicity_score": 0.05750068,
                "severe_toxicity_score": 0.0035858154,
                "identity_attack_score": 0.008139528,
                "insult_score": 0.02173949,
                "profanity_score": 0.043415543,
                "threat_score": 0.008168601,
                "sexually_explicit_score": 0.028662905,
                "flirtation_score": 0.41074932
            },
            "references.bib": {
                "toxicity_score": 0.007099825,
                "severe_toxicity_score": 0.0011587143,
                "identity_attack_score": 0.0013226734,
                "insult_score": 0.0067528714,
                "profanity_score": 0.013917602,
                "threat_score": 0.005928984,
                "sexually_explicit_score": 0.010910776,
                "flirtation_score": 0.19368951
            },
            "main.bbl": {
                "toxicity_score": 0.011874928,
                "severe_toxicity_score": 0.0011348724,
                "identity_attack_score": 0.003866276,
                "insult_score": 0.0075508766,
                "profanity_score": 0.014532468,
                "threat_score": 0.007521313,
                "sexually_explicit_score": 0.010969753,
                "flirtation_score": 0.27629572
            },
            "main.tex": {
                "toxicity_score": 0.011372286,
                "severe_toxicity_score": 0.0015163422,
                "identity_attack_score": 0.0027008436,
                "insult_score": 0.0073988754,
                "profanity_score": 0.016752819,
                "threat_score": 0.007365964,
                "sexually_explicit_score": 0.016395653,
                "flirtation_score": 0.27829376
            }
        },
        "reason": null
    }
}
{
    "num_done": {
        "figure": 0,
        "algorithm": 2,
        "plot": 0
    }
}
{
    "NonTrivialRenderingFilter": {
        "white_pixels_ratio": 90.24397434083298,
        "hash": "02001f8f9fbfbf3f",
        "most_frequent_color_ratio": 90.24397434083298
    }
}