LG Aimers에서 KAIST 신진우 교수님 강의를 듣고 정리한 내용입니다.

틀린 부분이 있다면 댓글 부탁드립니다!

 


 

1. Determinant and Trace

(1) Determinant

 

2 x 2 행렬 A에 대해서 역행렬이 존재하는지 알기 위해서 determinant를 구해본다.

determinant가 0이 아니라면 invertible하다.

 

 

2 x 2 행렬에서는 공식처럼 쉽게 역행렬을 구할 수 있다.

더 큰 행렬에 대해서는 Gaussian elimination 방법으로 역행렬을 구한다.

 

 

 

- determinant를 구하는 방법 중 하나로 Laplace expansion (라플라스 전개)가 있다.

 

행 확장이나 열 확장이나 결과는 동일하므로, 더 편한 방법을 사용하면 된다.

 

 

 

(2) determinant theorm

 

rk(A)는 A에 대한 rank (Column space의 차원 수)이다.

 

 

- determinant에 대한 성질은 다음과 같다.

 

determinant는 곱셈에 대해서 분리 가능하다는 점이 특징이다.

또한, (5)에서 삼각행렬에 대한 determinant 공식인데, 이는 당연하게도 대각행렬에서도 성립한다.

 

 

 

(3) Trace (대각합)

행렬의 대각 원소에 대한 합을 의미한다.

 

determinant가 곱셈에 대한 분해가 가능하다는 특징이 있었다면, trace는 덧셈에 대한 분해가 가능하다는 특징이 있다.

 

 

determinant와 trace는 고유값 분해에서 각각 고유값의 곱과 고유값의 합과 같다.

 

 

 

 

2. Eigenvalues and Eigenvectors

(1) 고유값과 고유 벡터

 

특성 방정식에 대한 determinant가 0이어야 한다.

 

그 이유는 적어둔 것과 같이 x가 영벡터가 아니라는 가정에서 특성 방정식이 역행렬을 가지지 않아야지만 해를 가질 수 있기 때문이다.

 

 

예를 들어,

 

이 결과를 통해 eigenvector는 하나만 존재하는 것이 아님을 알 수 있다.

 

 

 

(2) 특징

행렬 A가 n개의 서로 다른 고유값을 가진다면, 고유 벡터들은 linearly independent하다.

 

1. determinant에서 언급한 바와 같이, determinant와 trace는 고유값 분해에서 각각 고유값의 곱과 고유값의 합과 같다.

 

 

 

 

3. Cholesky Decomposition

주어진 행렬이 어떤 작은 행렬 두 개의 곱으로 나타낼 때 사용한다.

 

조건은 Positive-semi definite 행렬이어야 한다는 점이다. 그 기저에는 대칭행렬이라는 조건이 있다.

 

행렬 A에 대해서 숄레스키 분해를 하면 다음과 같고, L을 a 값에 관하여 구할 수 있다.

 

 

 

 

 

4. Eigen-decomposition and Diagonalization

(1) Diagonal Matrix and Diagonalization

대각행렬은 대각선에만 0이 아닌 수가 있고 나머지에는 0을 가지는 행렬이다.

 

이러한 대각행렬은 determinant가 대각선 원소들의 곱과 같고, 행렬의 k승수는 대각원소의 k 승수와 같다.

또한 역행렬은 원소의 역수와 같다.

 

어떤 행렬이 diagonalizable 하다는 것은 행렬이 n개의 선형 독립인 고유벡터를 가진다는 것과 같은 의미이다.

 

Orthogonally diagonalizable 하다는 뜻은 행렬과 전치행렬의 곱이 항등행렬임을 의미하기 때문에, 위와 같이 나타낼 수 있다.

행렬의 고유벡터들로 이루어진 행렬이 직교행렬이며, 모든 대칭행렬은 orthogonally diagonalizable하다.

 

 

 

(2) Power of Diagonalization

 

 

 

 

5. Singular Vector Decomposition

고유값 분해는 정방행렬에서만 가능했다면, 특이값 분해는 고유값 분해가 확장된 방법이다.

 

1) 대칭행렬은 아니지만 정방행렬인 경우

2) 대칭행렬도, 정방행렬도 아닌 경우

 

이때, 행렬의 전치행렬과 행렬의 곱, 행렬과 행렬의 전치행렬의 곱이 정방행렬임을 이용한다.

 

 

특이값 분해를 정리하면 다음과 같다.

 

 


 

 

1. 행렬을 summarize 하는 방법 : determinants, eigenvalues

 

2. 행렬을 분해하는 방법 : Cholesky decomposition, diagonalization, Singular value decomposition

1. 문제 설명

여러 사람이 둥글게 앉아서 숫자를 하나씩 차례대로 말하는데, 규칙은 다음과 같다.

 

- 숫자를 0부터 시작해서 차례대로 말한다. 첫번째 사람은 0, 두번째 사람은 1, ... 열번째 사람은 9를 말한다.

- 10 이상의 숫자부터는 한 자리씩 끊어서 말한다. 즉, 열한 번째 사람은 10의 첫 자라인 1, 열 두번째 사람은 둘째 자리인 0을 말한다.

 

이렇게 게임을 진행할 경우,

0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, ...

순으로 숫자를 말하면 된다.

 

이진법에서 십육진법까지 모든 진법으로 게임을 진행하기로 했다.

예를 들어 이집수로 게임을 진행한다면,

0, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, ...

순으로 숫자를 말하면 된다.

 

 

 

2. 입출력 형식

- 입력 : 진법 n, 미리 구할 숫자의 개수 t, 게임에 참가하는 인원 m, 튜브의 순서 p

- 출력 : 튜브가 말해야 하는 숫자 t개를 공백 없이 차례대로 나타낸 문자열. 단, 10 ~ 15는 각각 대문자 A ~ F로 출력한다.

 

 

 

3. 코드

def jinbub(num, jinsu):
    jin = ' 0'

    for i in range(1, num+1):
        changed = []

        while i != 0:
            left = i % jinsu

            if left >= 10:
                if left == 10:
                    left = 'A'
                elif left == 11:
                    left = 'B'
                elif left == 12:
                    left = 'C'
                elif left == 13:
                    left = 'D'
                elif left == 14:
                    left = 'E'
                elif left == 15:
                    left = 'F'

            changed.append(str(left))
            i = i // jinsu

        temp = ''.join(list(reversed(changed)))
        jin += temp
        
    return jin
    
def solution(n, t, m, p):
    jin_str = jinbub(t*m, n)
    
    i = 1
    answer = ''
    
    if m == p: p = 0
    
    while len(answer) < t:
        if i % m == p:
            answer += jin_str[i]
        i += 1
    
    
    return answer

 

 

 

4. 설명

(1) jinbub(num, jinsu)

미리 숫자들을 진법으로 변환시켜두어야 하는데, 몇 개를 미리 만들어둘지가 고민 되었다.

 

jin_str = jinbub(t * m, n)

 

이렇게 최대 (말해야 하는 숫자의 개수) * (참가하는 인원) 만큼 진법 변환 결과를 구해두고,

함수에서 반환 받아서 말해야 하는 순서에 맞게 문자열에 추가만 해주도록 한다.

 

Python에서 제공하는 진법 변환 함수는 bin(), oct(), hex()로 2, 8, 16진수 변환만을 제공한다. 따라서 이 문제에서는 3진법, 4진법 등 다양하게 요구하므로 직접! 구현해주어야 한다.

 

 

몫과 나머지를 각각 구해가면서 하나씩 배열에 나머지들을 저장한다. (만약 10 이상의 나머지일 경우, 해당하는 문자로 바꾸기)

그리고 그 배열을 reverse 해서 순서를 바꿔주고 문자열로 (join) 만들어준다.

 

이때, 나는 공백을 두고 0으로 초기화 ( jin = ' 0' ) 했는데, 그 이유는 게임에서 말하는 순서가 0번째부터가 아니라 1번째부터이기 때문이다.

 

 

 

(2) solution(n, t, m, p)

진법 변환 함수 호출해서 문자열을 받아 오고, 말해야 하는 숫자의 개수가 채워질 때까지 while문을 반복한다.

 

인덱스 1부터 시작하고, 만약 3명의 인원에서 3번째 순서인 경우 몫과 나머지로 차례를 판단하기 어렵기 때문에, 미리 m == p 일때 p=0으로 만들어주었다.

 

하나씩 더한 문자들의 문자열을 반환하면 끝!

 

 

 

LG Aimers에서 KAIST 차미영 교수님 강의를 듣고 정리한 내용입니다.

틀린 부분이 있다면 댓글 부탁드립니다!

 


 

1. 인공지능과 Creativity

(1) AI도 예술을 창조하는 시대가 도래

- 생성형 AI를 기반으로 그림을 만들고, 작곡을 하기도 한다.

- 실제로 Q&A 시스템에서 인공지능이 인간의 성능을 초월하기도 했다.

[Rajpurkar-Jia-Liang, ACL 2018]

- 2018년 기준이므로 현재는 더 뛰어난 모델이 개발되었을 것이다..

 

 

- 2024년 부천국제판타스틱 영화제에서는 인공지능 영화 부문을 신설하기도 했다.

 

 

 

(2) 저작권 이슈

https://obvious-art.com/portfolio/edmond-de-belamy/

 

- $432,500의 가격에 팔린 인공지능이 만들어낸 작품이다.

- 이때, 학습 데이터, 프로그래머, 기획자 사이에서 저작권 이슈는 빼놓을 수 없다.

- AI 예술 작품은 학습 데이터 기반이기 때문에 '창작성 (originality)'가 있는지 의문이 들기도 한다.

 

- 학습에 사용된 데이터를 제공한 사람에게도 혜택이 돌아가기가 어려운 것이 사실이다.

- 창작자인 AI는 법적 권리르 제공할 수 있는 법적 제도가 부재한 상황이며, 현존하는 예술가들의 스타일을 따라한 경우 상업적 피해를 발생시킨다.

- 또한, 창작된 작품이 인간의 윤리적 규범을 따르지 않을 수도 있다.

 

 

 

(3) 인공지능 법인

- 법인은 법적 권리와 의무에 대한 책임을 소지한다.

- 인공지능은 아직 법인에 속하지 않는다.

 

- '인공지능을 법인으로 인정할 것인가?'에 대한 의논이 벌어지기도 했다.

 

"장기적으로 로봇에 대한 구체적인 법적 지위를 창출하여, 적어도 가장 정교한 자율주행 로봇이 야기할 수 있는 손해를 충분히 배상할 책임이 있는 전자인의 지위를 갖게 하고, 로봇이 자율적인 의사결정을 하거나 그 밖에 독립적으로 제3자와 상호작용하는 경우에 전자인격을 적용할 가능성이 있는 경우"

 

 

- 법인격의 장점으로는 (1) 책임 문제가 쉽게 해결 (2) 혁신, 사회 발전 가능 (3) 법제도가 일관성 있게 유지 (4) 자연인이 아닌 것에 대한 법인이 이미 존재함

- 법인격의 단점으로는 (1) 법적 처벌의 도피로 악용될 가능성 (Liability Shields) (2) 도구주의에 반함 (3) 인류에 대한 수치 (4) 처벌의 어려움

 

 

 

(4) Moral Machine

- 아시모프의 로봇 3원칙이 있다.

- 첫째, 로봇은 인간을 다치게 해선 안 되며, 인간이 해를 입는 걸 방관해서도 안 된다.

- 둘째, 법칙 1에 위배되지 않는 한, 로봇은 인간의 명령에 복종한다.

- 셋째, 법칙 1과 2에 위배되지 않는 한, 로봇은 스스로를 보호해야 한다.

 

 

- 그렇다면 인공지능으로 인한 부작용에 책임 소재는 누구에게 있는지가 문제이다.

- 자율주행 자동차에서 사고가 발생했다면, 소유자, 자동차 회사, AI 개발자, 운전자, 자율주행차, 보행자 중에서 누구에게 법적 책임이 있는 것일까?

https://en.wikipedia.org/wiki/Moral_Machine

 

 

- 알고리즘이 결정을 내릴 때, Moral Machine 설문을 통해 선호도를 측정한다고 한다.

 

http://moralmachine.mit.edu/

 

- 사고의 가능성은 항상 존재하며, 누구를 보호할 것인가에 대한 인공지능의 결정은 여전히 연구 주제이다.

 

 

 

 

2. 세계적인 데이터 과학자가 되는 방법

- 이종 데이터의 결합을 통해 혁신적인 결과를 낸다.

- 예를 들어, 서울시 야간 버스 노선을 제작할 때 통신사와의 협업을 통해 수요를 파악했다고 한다.

 

- Digital Transformation을 통해, 이종 빅데이터의 결합과 새로운 인공지능 기반 계산 과학 방법의 적용이 이뤄진다.

- 이를 통해 데이터 사이언스 기반 난제를 해결하고, 정책을 결정하며 신규 산업을 창출할 수 있을 것으로 기대된다.

 

- 페이스북 스타일로 목표를 설정하는데, 이는 목표가 너무 낮아서 빨리 성취하도록 하는 것을 방지한다. 계속된 목표 수정으로 계속해서 성장해 나가도록 한다.

 

 


 

1. 인간의 창조적 활동 영역으로 들어온 인공지능은 인간의 개입 없이 독자적 창작과 혁신 활동이 가능한 수준으로 발전할 것이라는 전망이 있다.

 

2. AI 시대의 지식 재산, 법인격, 처벌, 윤리 문제 부각은 다양한 계층 시민의 수요와 요구를 논의를 통해 반영해야 한다.

 

3. AI에 대한 경계와 규제의 선택은 인류에 대한 재정의라고 할 수 있다.

+ Recent posts