{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/logic-explained-networks","title":"Logic Explained Networks","arxiv_id":"2108.05149","date":"2021-08-11","proceeding":null,"authors":["Gabriele Ciravegna","Pietro Barbiero","Francesco Giannini","Marco Gori","Pietro Lió","Marco Maggini","Stefano Melacci"],"abstract":"The large and still increasing popularity of deep learning clashes with a major limit of neural network architectures, that consists in their lack of capability in providing human-understandable motivations of their decisions. In situations in which the machine is expected to support the decision of human experts, providing a comprehensible explanation is a feature of crucial importance. The language used to communicate the explanations must be formal enough to be implementable in a machine and friendly enough to be understandable by a wide audience. In this paper, we propose a general approach to Explainable Artificial Intelligence in the case of neural architectures, showing how a mindful design of the networks leads to a family of interpretable deep learning models called Logic Explained Networks (LENs). LENs only require their inputs to be human-understandable predicates, and they provide explanations in terms of simple First-Order Logic (FOL) formulas involving such predicates. LENs are general enough to cover a large number of scenarios. Amongst them, we consider the case in which LENs are directly used as special classifiers with the capability of being explainable, or when they act as additional networks with the role of creating the conditions for making a black-box classifier explainable by FOL formulas. Despite supervised learning problems are mostly emphasized, we also show that LENs can learn and provide explanations in unsupervised learning settings. Experimental results on several datasets and tasks show that LENs may yield better classifications than established white-box models, such as decision trees and Bayesian rule lists, while providing more compact and meaningful explanations.","url_abs":"https://arxiv.org/abs/2108.05149v1","url_pdf":"https://arxiv.org/pdf/2108.05149v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"logic-explained-networks","repo_url":"https://github.com/pietrobarbiero/logic_explainer_networks","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"logic-explained-networks","repo_url":"https://github.com/pietrobarbiero/logic_explained_networks","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"explainable-artificial-intelligence","task_name":"Explainable artificial intelligence"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2108.05149","atlas_url":"https://app.syntology.ai/?focus=2108.05149","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2108.05149"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/pietrobarbiero/logic_explained_networks","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/pietrobarbiero/logic_explainer_networks","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"unverified":7},"by_repo_kind":{"official":{"samples":7,"ran":0,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"2fc1ba2f197007cf","entry":"accuracy_score","repo":"pietrobarbiero/logic_explainer_networks","repo_kind":"official","path":"lens/logic/metrics.py","file_url":"https://github.com/pietrobarbiero/logic_explainer_networks/blob/HEAD/lens/logic/metrics.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"2fc1ba2f197007cf"}},{"code_sha256_prefix":"6cf788a92c890917","entry":"compute_fol_formula","repo":"pietrobarbiero/logic_explainer_networks","repo_kind":"official","path":"lens/logic/psi_nn.py","file_url":"https://github.com/pietrobarbiero/logic_explainer_networks/blob/HEAD/lens/logic/psi_nn.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"6cf788a92c890917"}},{"code_sha256_prefix":"ab121c4402f079e3","entry":"explain_global","repo":"pietrobarbiero/logic_explainer_networks","repo_kind":"official","path":"lens/logic/explain.py","file_url":"https://github.com/pietrobarbiero/logic_explainer_networks/blob/HEAD/lens/logic/explain.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ab121c4402f079e3"}},{"code_sha256_prefix":"b88b7add4f88494c","entry":"explain_local","repo":"pietrobarbiero/logic_explainer_networks","repo_kind":"official","path":"lens/logic/explain.py","file_url":"https://github.com/pietrobarbiero/logic_explainer_networks/blob/HEAD/lens/logic/explain.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b88b7add4f88494c"}},{"code_sha256_prefix":"cb7e38e73fd7d506","entry":"fidelity","repo":"pietrobarbiero/logic_explainer_networks","repo_kind":"official","path":"lens/logic/metrics.py","file_url":"https://github.com/pietrobarbiero/logic_explainer_networks/blob/HEAD/lens/logic/metrics.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"cb7e38e73fd7d506"}},{"code_sha256_prefix":"11ca4af975545fff","entry":"generate_fol_explanations","repo":"pietrobarbiero/logic_explainer_networks","repo_kind":"official","path":"lens/logic/psi_nn.py","file_url":"https://github.com/pietrobarbiero/logic_explainer_networks/blob/HEAD/lens/logic/psi_nn.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"11ca4af975545fff"}},{"code_sha256_prefix":"7a46ca136a2edbac","entry":"generate_fol_explanations_from_data","repo":"pietrobarbiero/logic_explainer_networks","repo_kind":"official","path":"lens/logic/psi_nn.py","file_url":"https://github.com/pietrobarbiero/logic_explainer_networks/blob/HEAD/lens/logic/psi_nn.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"7a46ca136a2edbac"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}