728x90

축? 차원? axis? dim? 비슷한 듯 달라서 자주 헷갈렸었다.

Numpy와 Tensorflow에서 자주 등장하는 axis, dim의 차이를 정리해보고자 한다.

특히 axis와 dim은 행렬의 연산(concat, stack, sum, max...)의 방향을 설정하는 데 사용되므로, 확실히 짚고 넘어가보자.

 

 axis (축) 

배열의 차원 연산 방향 설정 시, axis의 해석 적용 예시
1차원 축은 axis = 0 하나 뿐이다. (행과 열로 구분되지 않음) dim_1 = np.array([0,1,2])
2차원 axis = 0 : 행 방향 (y 방향, 세로 방향)
axis = 1 : 열 방향 (x 방향, 가로 방향)
dim_2 = np.array([[0,1,2],
                             [3,4,5]])
* shape가 (2,3)

dim_2.sum(aixs=0) = [0+3, 1+4, 2+5]
                               = [3,5,7] (행 방향으로 합)
dim_2.sum(aixs=1) = [0+1+2, 3+4+5]
                               = [3, 12] (열 방향으로 합)
3차원 axis = 0 : 너비 방향 (z 방향)
axis = 1 : 행 방향 (y 방향, 세로 방향)
axis = 2 : 열 방향 (x 방향, 가로 방향)
dim_3 = np.array([[[0,1,2],
                               [3,4,5]],

                               [6,7,8],
                               [9,10,11]]])
* shape가 (2,2,3)

dim_3.sum(aixs=0) = [[0+6, 1+7, 2+8],
                                   [3+9, 4+10, 5+11]]
                               
                                = [[6,8,10],
                                   [12,14,16]]
                                   (너비 방향으로 합)

* 4차원 이상이 되면, 더 이상 행렬 개념으로 이해할 수 없음.

* 주어진 배열의 차원이 무엇이냐에 따라 axis = 0, axis = 1, ...가 가리키는 방향이 달라진다 ! 상대적 개념.

* axis를 지정하지 않고 sum을 할 경우 모든 원소의 합이 계산된다.

 

+ 2차원 배열에 대한 axis 개념을 직관적으로 잘 표현한 도식이 있다.

이미지 출처: jalammar.github.io/visual-numpy/

+ 3차원 배열에 대한 axis 개념을 직관적으로 잘 표현한 도식이 있다.

이미지 출처: https://acdongpgm.tistory.com/140

 

참고 페이지: https://pybasall.tistory.com/129

 


 dim  

* 주의: dim이 dimension(=차원)의 준말이기는 하나, 이때 '차원'의 두 가지 해석에 유의해야 한다.

* dim은 특정 텐서의 속성이기도 하고, 연산 방향을 설정할 때 사용될 수도 있다.

'차원'의 두 가지 의미
벡터나 행렬의 '열' 개수 ex 1. [1,2,3]는 3차원 벡터이다.
ex 2. 이번에는 이진 분류가 아닌 칠진 분류 task이므로, 7차원 벡터로 반환해야 한다.
텐서가 존재하는 '축'의 개수
=> ①
ex 1. [0,1,2]는 1차원 텐서(벡터)이다.

ex 2. [[0,1,2],
          [3,4,5]] 는 2차원 텐서(행렬)이다.

ex 3. [[[0,1,2],
           [3,4,5]],
           [6,7,8],
           [9,10,11]]] 는 3차원 텐서(행렬)이다.

ex 4. 점은 1차원, 직선은 2차원, 정육면체는 3차원!

 

배열의 차원 연산 방향 설정 시, dim의 해석 => ②
1차원 축은 axis = 0 하나 뿐이다. (행과 열로 구분되지 않음)
2차원 dim = 0 : 행 방향 (y 방향, 세로 방향) (* dim= -2)
dim = 1 : 열 방향 (x 방향, 가로 방향) (* dim= -1)
3차원 dim = 0 : 행 방향 (y 방향, 세로 방향) (* dim= -3)
dim = 1 : 열 방향 (x 방향, 가로 방향) (* dim= -2)
dim = 2 : 너비 방향 (z 방향) (* dim= -1)

 

* dim은 주어진 배열의 차원이 무엇이든지 관계 없이 axis = 0, axis = 1, ...가 가리키는 방향이 동일하다.

  속상하게도 axis에서 정한 방향과 다른 부분이 있으니 헷갈리지 말 것!

  그러나 dim=-1, dim=2,.. 이 가리키는 방향은 상대적으로 바뀌게 된다.

 

 

참고 페이지: https://questionet.tistory.com/25

 

 

 


+ a:

len size ndim shape reshape flatten
파이썬 내장 함수 numpy.ndarray 객체의 메서드 (파이썬 list나 string에 사용 불가)

ndarray.XX
첫번째 차원(행)의 원소 개수 행렬의
전체 원소 개수
행렬
전체 차원(dim) 표시
행렬의 shape 출력 배열을
새로운 shape로 변경 (*가능한 조건일 때)
n차원 행렬을 1차월 행렬로 reshape하여 복사본 출력

 

+ 미니배치 처리할 때는: (너비 값 즉 배치 사이즈 , 행 개수, 열 개수) 순서.

 

 

참고 페이지: https://tae-hui.tistory.com/entry/Python-numpy-%EB%B0%B0%EC%97%B4-%ED%81%AC%EA%B8%B0-%ED%98%95%EC%83%81-%ED%99%95%EC%9D%B8shape-ndim-size

https://blog.naver.com/PostView.nhn?blogId=life4happy&logNo=222170909964 

728x90

'개발' 카테고리의 다른 글

colab에서 .py 실행하기  (0) 2022.07.10

728x90

오늘 교육공학 연구실 세미나에서 배우고 느낀 점을 이하와 같이 정리해보고자 한다.

나의 의견에 대한 반박과 아이디어는 언제나 환영,,, 🌝

 

1. 인간의 직관 VS 빅데이터 기반 딥러닝

공통점 차이점
1) 경험이 축적된 것
    ⇒ 즉 인간의 직관 역시 체계적인 학습을 통해 후천적으로 양성 가능한 대상

2) 편향적 성격
3) 그 근거를 일목요연하게 설명하기 어려움.
    (블랙박스 모델)


1) 인간의 직관과 달리 인공지능은 (심지어 잘 구조화된 인공지능 모델이더라도) 자신이 모르는 것을 재빠르게 '모른다'라고 판단하는 데 상당히 오랜 시간이 걸린다. (자신이 갖고 있는 모든 데이터를 확인한 후 어떻게든 예측해낼텐데, 그 예측이 정답이면 잘 아는 것이고 오답이면 잘 모르는 부분이었다고 사후적으로 판단하게 된다.) 이와 달리 인간은 자신이 모르는 내용을 만나면 몇초 안에 스스로 '내가 모르는 내용이구나' 하고 판단해낼 수 있다.

2) 인간의 직관은 살아오면서 축적된 데이터 뿐 아니라 다양한 역량(논리력, 창의력, 분석력 등)이 복합적으로 결합한 결과일 것이다.

+

차이점 1번과 관련하여 떠오르는 아이디어가 있다

자신이 '이 부분은 정확히 예측할 것 같다(=나는 input에 대해 잘 알아)' 혹은 '정확히 예측하지 못할 것 같다(=나는 input에 대해 잘 몰라)'를 사전에 판단할 수 있는 인공지능도 있을까?

혹은 현재 input에 대한 예측 정확도는 n%야 라고 설명하는 인공지능이 개발되었을까?

--- 나아가 XAI와 관련된 아이디어인 것 같다는 생각도 든다.

 

사실 차이점 2번과 관련하여서는 내 의견에 대한 확신이 부족하다. 사실 인공지능의 예측 과정 자체가 블랙박스라, 인공지능에게도 어떠한 특별한 역량이 있다고 혹은 없다고 단정짓기 어려워 보인다.
+ 그렇지만 여전히, 인공지능은 주로 단일한 형태의 정형화된 데이터에 상당히 의존적인 모델이라고 생각한다.

이와 달리 인간의 직관은 상대적으로 더 입체적이고 다양한 방식으로 생성된다는 이미지가 있다. 예컨대, 경험 데이터의 형식이 훨씬 다양하고 정형화되어있지 않으며, 각 경험이 개인의 직관을 구성하는 방식 역시 역동적일 것이다.

+ 흠... 오히려 공통점에 가까운가..?

+ 그렇다면 차이점에 무엇이 또 있을까...?

 

 

2. 분야별로, 교과별로 필요한 직관은 서로 다르다. 

 

3. 나의 탐구 주제:

"인간과 AI 간 관계가 보다 신뢰롭고 긍정적이도록 형성하려면 어떤 전략/요소가 필요할까?"

"XAI에서 X한다면 어떤 방식으로 제공되는 것이 적절할까? 어느 시점에? 학습자가 X를 원하는 경우는 언제일까?"

 

 

-저작자표시

-비영리

-변경금지 !!!

728x90
728x90

     산업계뿐 아니라 일상 속에서 인공지능의 사용이 만연해지면서 인공지능의 신뢰도 향상에 대한 윤리적 요구가 증가하고 있다. 기존의 인공지능은 이른바 블랙박스라는 별칭을 가질 만큼 그것이 내린 결론의 구체적 원리나 근거를 이해하는 데 어려움이 있었다. 이에 따라 설명 가능한 인공지능(eXplainable AI: XAI)의 필요성이 제고되었으며, XAI는 인공지능이 특정 결론을 내리기까지의 근거들을 사용자가 이해할 수 있도록 설명해주는 특성을 지닌다. 뿐만 아니라, 인공지능을 활용한 다양한 의사결정 과정에서 그것의 타당성을 검토하고 공정성에 대한 입증을 가능하도록 만들어준다.

     그러나 XAI는 현재 개발된 모든 인공지능 모델에 적용되는 것이 아니다. 현실적으로, 깊은 심층 신경망 기반의 복잡한 모델의 경우 학습 과정 자체가 고비용일 뿐 아니라 그것이 어떻게 특정 결론을 도출했는지 전문가조차도 그 근거를 이해하기 어려운 실정이다. 실제로, 많은 경우 인공지능의 설명 가능성이라는 특성을 취하기 위해 성능을 희생해야 하는 딜레마가 발생한다. 과연 사람들은 상대적으로 예측력이 떨어지더라도 설명 가능한 인공지능을 원할 것인가? 이러한 선택은 그 구체적인 상황이 무엇이냐에 달린 문제인데, 본 포스트에서는 해당 상황을 교육의 장으로 축소해보고자 한다.

     결론부터 말하자면, 교육의 장에서는 인공지능의 설명 가능성이 더 큰 가치를 지닌다고 볼 수 있다. 교육에서 인공지능을 활용하는 경우는 이하 네 가지로 간단히 정리해볼 수 있으며

(1) 인공지능에 대한 윤리 교육

(2) 기술적 측면에서의 인공지능 교육

(3) 학습 진단하기 위한 학습과학 측면에서의 인공지능

(4) 교육 현상을 설명하기 위한 통계적 분석

 

     첫 번째의 경우, XAI는 학생들이 인공지능을 접하고 마주하는 과정에서 그것을 보다 주체적으로 활용할 수 있도록 돕는다. 인간이 인공지능으로부터 근거와 설명을 요구한다는 것은, 인공지능의 결론에 일방적으로 의존하기보다 그것의 원리와 근거를 바탕으로 최종 결정을 인간 자신이 직접 결정하고자 하는 것이다. XAI에 대한 수요는 인간 주체성에 대한 강조라고 이해할 수 있으며, 인공지능을 처음 접하는 학생들에게 인공지능을 신격화하는 태도보다는 주체적으로 취사선택할 수 있는 대상으로 받아들이도록 하는 것이 바람직하다.

     그렇다면, 학습 진단 과정에서 인공지능을 활용하는 경우는 어떠할까? 학습과학에서 가장 경계하는 것 중 하나가, 학생에 대한 인공지능의 예측이 모종의 낙인효과를 초래하거나 학생에 대한 교사의 부적절한 기대(inappropriate expectation)를 유발하는 상황이다. 구성주의의 관점에서 교사는 모든학생이 학습 과정에서 성공할 수 있을 것이라 기대해야 하며 이를 위해 적절한 피드백을 제공해야 하는데, 인공지능의 예측을 근거 없이 신뢰하는 것은 이러한 태도에 상충하게 된다. 교사는 성능 높은 인공지능의 수행 결과를 비판 없이 수용하기보다, 비록 예측력이 상대적으로 저조하더라도 인공지능이 그러한 판단을 내린 근거를 참고하여 더 발전된 스캐폴딩을 제공하거나 수업 계획을 유동적으로 조절하는 데 활용하는 것이 합당할 것이다.

     마지막으로, 교육 현상을 설명하는 교육 통계의 과정에서도 XAI의 가치가 두드러질 수 있다. A. Adadi, M. Berrada(2018)에 의하면 인간은 XAI가 제공하는 설명을 바탕으로 인공지능의 오류를 발견할 수 있으며 이를 통해 교육과 관련한 중요한 결정 상황에서 심각한 오류 등을 방지할 수 있다는 점에서 유의미하다. 그뿐만 아니라, XAI가 교육 현상에 관하여 설명을 제공하게 될 때 연구자는 예기치 않은 새로운 지식을 얻을 수 있으며, 이는 교육 현상 연구를 위한 새로운 재료가 될 수 있다. 이에 따라 교육의 장에서 XAI의 필요성은 분명하며 인공지능의 설명 가능성이 충분한 교육적 가치를 함의한다고 볼 수 있다.

 

 

 

참고 문헌

1) 박다빈,and 신승기. "초등 인공지능 교육을 위한 설명 가능한 인공지능의 교육적 의미 연구." 정보교육학회논문지 25.5 (2021): 803-812.

2) Adadi, A., & Berrada, M. (2018). Peeking inside the black-box: a survey on explainable artificial intelligence (XAI). IEEE access, 6, 52138-52160.

 

-저작자 표시

-비영리

-변경금지

728x90

'HCI > Idea' 카테고리의 다른 글

학습장애, AI 관련 아이디어  (0) 2022.07.27
헬스 게임 아이디어 (HCI?)  (0) 2022.07.18

728x90

런타임-런타임유형변경-GPU 설정 #GPU 사용하기

 

google drive를 mount하기

방법 1) 파일 폴더 - 우측의 구글 드라이브 아이콘 클릭 (Google Drive에 연결 클릭)

방법 2)

from google.colab import drive

drive.mount('/content/drive')

 

 

.py 파일 수정하기

왼쪽 디렉토리 목록에서 원하는 파일 더블클릭 - 파일 수정

 

.py 파일 실행하기

%cd /content/drive/Mydrive.... #파일이 위치한 경로로 변경
!python ____.py #특정 파일 실행

 

터미널 기본 명령어

ls 현재 디렉토리의 파일 목록 출력
cd 디렉토리를 이동
pwd 현재 경로를 보여줌
rm 파일이나 디렉토리 삭제
cp 파일이나 디렉토리 복사
mv 이름 변경 or 다른 디렉토리로 이동시킴
mkdir 새로운 디렉토리 생성
rmdir 디렉토리 삭제

 

https://www.youtube.com/watch?v=lGUVXXRlpyU&list=PLZjIfJn3RN8uuQcxfAKIrYOCXfcWCBXMC 

728x90

'개발' 카테고리의 다른 글

[Numpy, Tensorflow] axis, dim (shape, ndim, size...)  (0) 2022.07.23

+ Recent posts