-
-
Notifications
You must be signed in to change notification settings - Fork 203
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Stochastic PDE Functionality #531
Comments
Let's start it with a nice scheme for stochastic ODEs. A nice way to do this would be to use the Kosambi-Karhunen-Loevre theorem for the expansion of the Wiener process: https://en.wikipedia.org/wiki/Kosambi%E2%80%93Karhunen%E2%80%93Lo%C3%A8ve_theorem#The_Wiener_process For Okay, so that's our setup. So now define the PINN solution Now by definition of the KKL expansion theorem, one can generate solutions of the SDE with the correct distribution by choosing Let's start there. SPDE polynomial chaos expansion is just a harder case of this, and since lots of people use SDEs, this is probably very useful. So what we should do is define a function that takes an |
Ok I think I mostly understand. Basically you're doing a basis expansion of the Wiener process a la a Fourier expansion and then we solve the SDE in the coefficients of that basis. How big does n typically have to be for this to be effective?
What properties do you typically check to make sure that the SDE is being solved? That the expectation/variance/higher moments match? |
I have the same questions as Zoe about what properties to check to ensure the SDE is being solved. How do we enforce I think other than these questions, I understand our general approach. I am also not sure how the code should be organized. Within the NeuralPDE ecosystem, there's code for solving the Kolmogorov equation ( |
You don't need to enforce it during the solution process. You just need to make sure that for any choice of
Mean/var and its evolution is probably good enough.
Yeah give it its own script. Note that some of those extra equation solvers are getting moved to https://github.com/SciML/HighDimPDE.jl to make this repo all about PINNs. |
Does it make sense to do something like stochastic sampling strategy during training but sample from the As far as code organization goes, I think that having it be in its own file is ok but you might end up having to double dip and reimplement some of the symbolic parsing/analysis functionality from the main file as it isn't very well cleanly separated into independent composable utilities right now. It's something I've been meaning to do for a while now but haven't been able to get the focused time to do. Structurally though it will be very similar to the setup in
Sounds good. |
Yes probably. You can choose distributions as the sampling scheme for
The SDESystem format is probably the one to build off for starters here, and it's very different. That won't require any new primitives and can be started without a lot less parsing effort. |
I have been working on the method to convert an From the docs, my understanding that If my understanding of My code isn't ready for review but it's getting there -- is it okay if I PR it as a draft PR? |
You shouldn't need more domains and boundary conditions on a SDESystem. The domain is just the independent variable (time span) and the boundary condition is the initial condition.
Yes, early and often is best. Basically, just start simple and build up. If you use SDESystem / SDEProblem, then there's no parsing required. See the similar https://github.com/SciML/NeuralPDE.jl/blob/master/src/ode_solve.jl It is a physics-informed neural network training on ODEProblem, so no symbolic parsing is required. This is probably a good playground for the first half to hone the techniques since that will give a focus on the math and the methods instead of the symbolic parsing. |
I did a major overhaul to update NNODE to serve as a good example: So let's start this off by doing the same thing except on SDEProblem, with the Wiener expansions. That can be something you can work on getting right in a script and then similarly carry over to the library much easier than hacking things into the symbolic parser etc. |
I added a script that solves the linear SDE using only two modes in #566. Here's a plot generated by the script: The script needs to be extended so that the number of modes in the expansion is flexible. I'm working on the multi-dimensional version. |
Im taking this up. |
@hpieper14 @ChrisRackauckas @frankschae @KirillZubov
Design discussions here so that they don't get slurped up by slack.
The text was updated successfully, but these errors were encountered: