Skip to content
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

additional SOAP (turbo) descriptors for multi-species GAP #8

Open
richardjana opened this issue Apr 22, 2023 · 4 comments
Open

additional SOAP (turbo) descriptors for multi-species GAP #8

richardjana opened this issue Apr 22, 2023 · 4 comments

Comments

@richardjana
Copy link

I am currently working on a multi-species GAP for two elements with previously existing GAP potentials. As a starting point, I joined both training data sets and used all the descriptors from the original GAPs. I then extended the SOAP descriptors to both species and added an additional 2b descriptor (mixed):

distance_2b: A-A
angle_3b: A-A-A
soap_turbo: AB, A-centered
distance_2b: A-B
distance_2b: B-B
angle_3b: B-B-B
soap_turbo: AB, B-centered

I expected this to work reasonably well on the original training data, as that was still included in the new training set and the necessary descriptors were also still there. However, I found that for one of the elements (but not the other!), the new GAP performed much worse than the old (single-species) one. I then added 2 more SOAP descriptors, one for each pure element:

distance_2b: A-A
angle_3b: A-A-A
soap_turbo: AB, A-centered
**soap_turbo: A, A-centered**
distance_2b: A-B
distance_2b: B-B
angle_3b: B-B-B
soap_turbo: AB, B-centered
**soap_turbo: B, B-centered**

This fixed the issues I had before, giving RMSE on the training data similar to the original GAPs for both elements.

Has anyone experienced such behavior before? Is it the result of a bug in gap_fit, or to be expected for physical reasons?

Copy link

gabor1 commented Apr 22, 2023

Interesting. I've never done this. Is it possible that you didn't get too many sparse points with just A or just B for the first fit? You can control how the sparse points are selected eg you could request a certain number of sparse points from the pure A and pure B part of the training set. This is done with the config_type_n_sparse keyword

@richardjana
Copy link
Author

I used the config_type_n_sparse in both cases, with the same number of sparse configs in each case. (Of course, the mixed and pure SOAP descriptors might pick up different environments. So, in a sense, I had more sparse configurations in the case with 4 SOAP descriptors...)
I'll run a test doubling the numbers for the 2*SOAP GAP, so the sums are the same.

@richardjana
Copy link
Author

An update on this issue: I pinned the problem down to the atom_sigma_r and atom_sigma_t parameters of the SOAP descriptors -- as I had made my initial gap_fit command by combining the single-species commands the atom sigma were not the same between the SOAPs. I assumed this was just fine.
However, I found that I can get a working potential with

distance_2b: A-A
angle_3b: A-A-A
soap_turbo: AB, A-centered
distance_2b: A-B
distance_2b: B-B
angle_3b: B-B-B
soap_turbo: AB, B-centered

when the atom sigmas are the same in both SOAP descriptors, but not when they are different (as described above). Is this a bug, or expected behavior? (At least I did not expect this.)

The problem also goes away when using 4 SOAP descriptors as above, regardless if the atom sigmas are the same or not.

@mcaroba mcaroba transferred this issue from libAtoms/QUIP Jun 20, 2023
@mcaroba
Copy link
Collaborator

mcaroba commented Jun 20, 2023

I've transferred this issue to the soap_turbo repo. I'll try to take a look when I have the chance.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants