아래 내용은 XAI를 공부하며 'XAI 설명 가능한 인공지능, 인공지능을 해부하다' 서적을 요약 정리한 내용입니다. 실습을 통해 본 컴퓨터 세팅에 따라 코드 부분이 다를 수 있습니다.
연관게시글
XAI(2016-2021)
XAI는 '설명 가능한 의사 결정 체계'라는 용어로 1975년 처음 등장합니다. 이 논문을 쓴 뷰캐넌(Buchanan)과 쇼트리프(Shortliffe)는 의학도들의 행동을 관찰하던 중 그들의 의사 결정에 의심을 가졌습니다. 당시 의사들은 매우 적은 수의 환자들을 보고 병명을 판단했기 때문입니다. 통계를 연구하던 둘은 의사들의 부정확한 추론 과정을 확률적으로 모델링하는 '조건부 확률 근사값(Rul-based conditional probability approximation)'이라는 방식을 개발하였고, 그로부터 16년 뒤 설명 가능한 인공지능은 전문가 시스템에서 컴퓨터의 의사 결정 과정을 드러내는 연구로 발전하였습니다.
2004년이 되어서야 'XAI(Explainable Artificial Intelligence)'라는 전문 용어로 자리 잡게되며 반 렌트(Michel van Lent)와 피셔(William Fisher), 만쿠소(Michael Mancuso) 세 사람이 만들게 됩니다.
2000년대까지만 해도 XAI는 계산력(Computing power)을 비롯한 물리적 제약 조건으로 제한된 범위에서 사용되었습니다. 하지만 오늘날 인공지능은 전문가들이 몇 날 며칠을 분석해야 하는 문제를 단 몇 초나 몇 시간 만에 풀어 연구자들은 설명 가능한 인공지능을 하나의 체계로 정리할 필요를 느끼게 되었습니다.
XAI는 인공지능 모델이 특정 결론을 내리기까지 어떤 근거로 의사 결정을 내렸는지를 알 수 있게 설명 가능성을 추가하는 기법으로 주로 머신러닝과 연관된 사람이 시스템을 신뢰하기 위해 사용됩니다. 머신러닝 모델의 복잡성을 해소하고 알고리즘 설계자와 의사 결정자를 합리적으로 설득할 수 있습니다.
그렇지만 인공지능의 정확도 자체가 낮은 경우에 설명 가능은 오히려 문제를 키울 수 있습니다. 머신러닝에 설명성을 부여하는 알고리즘 또한 다양한데 몇몇 경우 XAI 알고리즘 기법들은 서로 사웅하는 설명 결과를 내놓기도 하므로 올바른 XAI 알고리즘을 선택하는 안목은 데이터의 특성과 XAI 알고리즘 원리를 잘 이해하고 있는 데이터과학자의 숙련도에 달려있습니다.
XAI기법 중 피처중요도(Feature Importance) 표시나 필터시각화(Filter Visualization) 기법, LRP(Layer-wise Relevance Propagation)를 이용한 히트맵 해석 등은 불투명한 인공지능의 의사 결정 과정을 설명적으로 개선합니다. 다르파의 지침에 의하면 XAI는 다음 세 가지 과정을 포함하고 있습니다.
- 기존 머신러닝 모델에 설명 가능한 기능 추가
- 머신러닝 모델에 HCI(Human Computer Interacion) 기능 추가
- XAI를 통한 현재 상황의 개선
XAI를 잘하기 위한 조건
XAI를 잘하기 위해서는 기존 머신러닝 이론을 충분히 이해해야하며 2017년 다르파는 XAI를 실무에 적용하기 위해서는 두 가지 과제를 순서대로 해결해야 한다고 언급했습니다.
XAI 구현 방법1
- 현재 문제를 해결하는 머신러닝 모델을 만든다.
- 설명 가능한 모델을 결합한다.
- 모델의 결과를 해석하는 인터페이스를 연결한다.
- 모델의 문제점을 발견하고 개선한다.
- 모델을 테스트하고 평가하는 파이프라인을 구축한다.
XAI 구현 방법2
- XAI 구현 방법 1을 설명하는 이론적 기반을 마련한다.
- (1)을 뒷받침할 수 있는 계산 모델을 만든다.
- 모델을 검증한다.
일반 업계에서 XAI를 적용하는 과정은 XAI 구현 방법 1으로도 충분하나 논문을 쓰려는 연구자라면 XAI 구현 방법 2도 충분히 숙지해야할 것 입니다.
(출처 : 경향신문)
다르파는 XAI를 통해 머신러닝 모델을 활용하는 것뿐만 아니라 모델에 자기 설명적인 기능을 추가했을 때 어떤 이점이 있는지 설명하고 있습니다. 위 그림에 의하면 XAI는 머신러닝 모델이 왜 특정 행동을 하는지 설명할 수 있으며, 왜 의도한 대로 동작하지 않는지에 관한 근거를 제시하는 기술입니다.
실습환경 구축
XAI 기법을 실습할 때는 고사양 그래픽 카드나 높은 프로세서가 필요없으나 이미지를 학습하기 위해선 텐서플로를 사용할 때는 GPU 머신 사용을 권장합니다.
1. 파이썬 설치
파이썬은 3.6 릴리즈 버전을 설치합니다. 현재 텐서플로는 파이썬 2.7 또는 파이썬 3.4, 3.5, 3.6을 권장하고 있습니다.
2. PIP 설치
PIP는 파이썬으로 작성된 패키지 소프트웨어로 이 책에서 설치에 사용한 PIP 패키지 버전은 19.0.3입니다. GPU 머신 연산을 사용하지 않는 PIP 패키지 리스트는 아래와 같습니다. 버전을 입력하지 않는다면 패키지는 자동으로 최신 버전을 설치하게 됩니다.
xgboost==0.81
scipy==1.2.1
numpy==1.16.2
PDPbox==0.2.0
Pillow==5.4.1
ipython==7.3.0
lime==0.1.1.34
notebook==5.7.4
shap==0.29.1
pip 패키지 중 GPU 연산을 사용해야 하는 경우 먼저 CUDA와 cuDNN을 설치해야 합니다. CUDA는 그래픽카드에서 사용하는 병렬 처리 알고리즘을 표준 산업 언어로 사용할 수 있게 열어둔 그래픽 라이브러리고, cuDNN은 CUDA로 구현된 딥러닝 라이브러리입니다. cuDNN은 CUDA에 의존적이고, CUDA는 그래픽 카드를 제어하므로 자신의 그래픽카드와 호환되는 CUDA와 cuDNN을 설치해야합니다. 이 두가지가 제대로 연결돼 있어야 텐서플로가 동작하게 됩니다.
absl-py==0.7.0
astor==0.7.1
attrs==18.2.0
backcall==0.1.0
bleach==1.5.0
certifi==2018.11.29
chardet==3.0.4
cloudpickle==0.8.0
colorama==0.4.1
cycler==0.10.0
dask==1.1.4
decorator==4.3.2
defusedxml==0.5.0
entrypoints==0.3
gast==0.2.2
google-pasta==0.1.4
grpcio==1.19.0
h5py==2.9.0
html5lib==0.9999999
idna==2.8
ipykernel==5.1.0
ipython==7.3.0
ipython-genutils==0.2.0
jedi==0.13.3
Jinja2==2.10
jsonschema==3.0.0
jupyter-client==5.2.4
jupyter-core==4.4.0
Keras-Applications==1.0.7
Keras-Preprocessing==1.0.9
kiwisolver==1.0.1
Markdown==3.0.1
MarkupSafe==1.1.1
matplotlib==3.0.3
mistune==0.8.4
mock==2.0.0
nbconvert==5.4.1
nbformat==4.4.0
networkx==2.2
notebook==5.7.4
numpy==1.16.2
pandas==0.24.2
pandocfilters==1.4.2
parso==0.3.4
pbr==5.1.2
pickleshare==0.7.5
Pillow==5.4.1
prometheus-client==0.6.0
prompt-toolkit==2.0.9
protobuf==3.6.1
Pygments==2.3.1
pyparsing==2.3.1
pyrsistent==0.14.11
python-dateutil==2.8.0
pytz==2018.9
PyWavelets==1.0.2
pywinpty==0.5.5
pyzmq==18.0.0
requests==2.21.0
scikit-image==0.14.2
scikit-learn==0.20.3
scipy==1.2.1
Send2Trash==1.5.0
six==1.12.0
tensorflow-gpu==1.5.0
tensorflow-tensorboard==1.5.1
termcolor==1.1.0
terminado==0.8.1
testpath==0.4.2
toolz==0.9.0
tornado==5.1.1
tqdm==4.31.1
traitlets==4.3.2
urllib3==1.24.1
wcwidth==0.1.7
Werkzeug==0.14.1
xgboost==0.81
이 데이터는 해당 서적 깃허브에 업로드 되어 있고 패키지를 한꺼번에 설치하려면 위 데이터를 내려받은 다음 콘솔창에 아래와 같이 입력하면 됩니다. 저는 패키지 설치시
pip install -r requirements.txt
3. 텐서플로 설치
텐서플로는 구글이 개발한 데이터 흐름 계산 전용 오픈소스 소프트웨어 라이브러리로 운영체제뿐만 아니라 CUDA 버전, 파이썬 버전에 의존적이기 때문에 설치가 까다롭습니다. 이 책은 윈도우10을 기준으로 설치 과정을 설명하고 있으나 저는 우분투 환경에서 작업할 것이기 때문에 이 부분은 패스하고, 기존에 사용하고 있는 우분투 환경의 GPU version은 아래와 같습니다.
nvidia-smi
4. 주피터 노트북
주피터 노트북(Jupyter notebook)은 브라우저 환경에서 코딩하고 결과물을 한 화면에 확인할 수 있는 대화형 편집기입니다. 주피터 노트북은 연구 과정을 단계별로 나누어 진행할 수 있기 때문에 학습 과정을 기록하기 좋습니다. 주피터는 pip 패키지 중 ipython과 notebook으로 설치할 수 있습니다.
4-1) Tensorflow-GPU 설치 확인
GPU가 구동하는지 확인하기 위해서 간단한 토이 코드를 실행해보겠습니다. 아래 예제는 텐서플로 기본 장치를 GPU로 세팅한 다음 2차원 행렬 두 개(2X3, 3X2)를 만들고 곱하는 연산을 수행합니다. 텐서플로는 첫 번째 with 문장에서 GPU를 사용하는 세션을 만들어 연산을 수행하고, 두번째 코드에서는 log_device_placement 옵션을 켜서 GPU 연산이 가능한지 테스트합니다.
import tensorflow as tf
with tf.device('/gpu:0'):
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2,3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3,2], name='b')
c = tf.matmul(a, b)
with tf.Session() as sess:
print(sess.run(c))
# 그래프 생성
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2,3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3,2], name='b')
c = tf.matmul(a, b)
# 디바이스가 True일 때 세션 생성
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
# 연산 수행
print(sess.run(c))
GPU가 기본값으로 설정돼 있다면 노트북은 다음 결과를 화면으로 출력하게 됩니다.
[[22. 28.]
[49. 64.]]
[[22. 28.]
[49. 64.]]
다음 장에서는 Xgboost 알고리즘을 사용해서 모델을 생성하고 XAI를 결합하여 모델에 대한 해석을 진행해보겠습니다.
참고자료
[도서] XAI 설명 가능한 인공지능, 인공지능을 해부하다
혼자 공부하면서 정리하는 개념으로 작성하여 많이 부족합니다.
틀린부분이나 첨언해주실 내용 있으시면 댓글 부탁드려요 ^^*
'머신러닝&딥러닝 > 책요약및리뷰' 카테고리의 다른 글
[혼자공부하는머신러닝+딥러닝] 3. 회귀 알고리즘과 모델 규제 (0) | 2022.06.15 |
---|---|
[혼자공부하는머신러닝+딥러닝] 2. 데이터 다루기 (0) | 2022.06.13 |
[혼자공부하는머신러닝+딥러닝] 1. 마켓과 머신러닝 (0) | 2022.06.10 |
[XAI 설명가능한 인공지능] 3. 모델 튜닝하기-Xgboost (0) | 2022.05.17 |
[XAI 설명가능한 인공지능] 2. 모델 생성 및 해석 실습-Xgboost (0) | 2022.05.16 |