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

alpha-beta-crown behavior #48

Open
mhmd97z opened this issue Feb 8, 2024 · 1 comment
Open

alpha-beta-crown behavior #48

mhmd97z opened this issue Feb 8, 2024 · 1 comment

Comments

@mhmd97z
Copy link

mhmd97z commented Feb 8, 2024

Hi,

I tried the following simple network to make sure I correctly understood alpha-beta-CROWN behavior.
Untitled Diagram drawio

Case 1:
(assert (or
(and (>= X_0 -1.0) (<= X_0 1.0) (>= X_1 0.5) (<= X_1 0.5) (<= Y_0 -0.6))
))
The true interval of y_0 is [-0.5, 0.5]. alpha-beta-CROWN returned safe.

Case 2:
(assert (or
(and (>= X_0 -1.0) (<= X_0 1.0) (>= X_1 0.5) (<= X_1 0.5) (>= Y_0 0.0))
))
The true interval of y_0 is [-0.5, 0.5]. alpha-beta-CROWN returned unknown.

The result of case 1 is as I expected, but I expected the result of case 2 to be unsafe as alpha-beta-crown is sound and complete. Please correct me if I am wrong but when two possible cases of the only Relu node are investigated and the corresponding bounds are calculated, I think we can give a definite response with regard to the violation or satisfaction of the defined property.

Here are the yaml config yaml.txt and the model model.txt in case you need them.

@mhmd97z
Copy link
Author

mhmd97z commented Feb 15, 2024

I figured that it is needed to run the LP solver for each domain when all unstable nodes are split, but the result of BaB is not conclusive. I wanted to confirm with you batch_verification_all_node_split_LP method defined here is used for this purpose.
Thanks.

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

1 participant