Classification: y = 0 or y = 1

if hθ(x) 0.5, predict y=1

if hθ(x) < 0.5, predict y=0

⇒ logistic regression: 0 hθ(x) ≤ 1


Hypothesis Representation

- Sigmoid function (==logistic function)

(cf) hθ(x) = 0.7 ⇒ 70% chance of ~~~


Decision boundary

hθ(x) = g(θ01x1+θ2x2)  ⇒  predict y=1 if -3+x1+x2 ≥ 0

decision boundary



Cost function

- How to choose parameter θ? 


Simplified cost function and gradient descent

* convert the two lines into one line

Logistic regression cost function



 

Gradient Descent

 *Looks same as linear regression!

BUT, hθ(x) are different! ==>

 

 


Multi-class classification (one-vs-all)

 







Sigmoid function  VS  softmax classifier

⇒ sigmoid: get percentage on how y might equal to 1 for each class

⇒ softmax: get the distribution of percentage of the classes

 

2022.01.25

Coursera - Machine Learning_Andrew Ng - Week 2

 

Multiple features(variables)

 

Gradient descent for multiple variables

 

Gradient descent in practice 1: Feature Scaling

- feature scaling

: simple trick to apply → make gradients run much faster and converge in a lot fewer other iterations.

: make sure features are on a similar scale ⇒ get every features into approximately a -1<=xi<=1 range

- mean normalization


Gradient Descent in practice 2: Learning rate

- Debugging: make sure gradient descent is working correctly

        (use visualization using plot vs automatic convergence test)

If α is too small ⇒ slow convergence

If α is too big ⇒ J(θ) may not decrease on every iteration; may not converge

 

Features and Polynomial Regression

example of polynomial regression formula

Normal Equation formula

⇒ Compare with Gradient Descent

 

Gradient Descent Normal Equation
needs to choose α no need to choose α
needs many iterations don't need iteratation
works well even when n is large   slow if n is very large + need to compute

 

Supervised learning

-classification vs regression(contiguous variables)

 

Unsupervised learning

-no answers given to the algorithm ⇒ computer automatically analyze

-cocktail party problem ⇒ 2 audio recordings → separate out the two voices ⇒ can be done with single line of code

⇒ [W,s,v] = svd((repmat(sum(x.*x,1),size(x,1),1).*x)*x’);

⇒ use “Octave” or “Matlab” ⇒ it’s faster

 

[Linear Regression]

Model Representation

-supervised learning has training set

-training set → learning algorithm

* hypothesis:

 

Cost Function

⇒ Goal: minimize J(θ0 , θ1) ⇒ global minimum

⇒ use contour plots/figures for visualization

⇒ linear line of h(x) is converted to a single point in cost function graph



Gradient Descent Algorithm

Gradient Descent Algorithm Contour Plot

If is α too small ⇒ gradient descent can be slow (alpha = step size)

If is α too big ⇒ gradient descent fail to converge, or even diverge

α rate doesn’t need to decrease →automatically take smaller steps

Batch Gradient Descent: every step needs to calculate all training sets in batches




 

Review:

Although there is difficulty in understanding the whole process, particularly the gradient descent equation, I am fairly able to get the big picture and the important concepts of machine learning regarding supervised/unsupervised learning, model representation, cost function, and gradient descent algorithm.

I am currently able to follow the contents and able to solve the quiz in Coursera for each lecture without much difficulty, yet!

http://www.aitimes.com/news/articleView.html?idxno=141812 

 

인공위성이 찍은 빅데이터 생태계 영상...AI가 세세하게 분석한다 - AI타임스

생물 다양성이 감소되면 생태계 균형이 깨지고, 여기서 다양한 생물 자원을 얻어서 살아가는 인간의 삶도 파괴된다. 따라서 인류는 오래전부터 생물 다양성의 감소 원인을 파악하고, 그 보전을

www.aitimes.com

(c)Pixabay, geralt

최근에 대두되는 AI 분야 중에 한 분야가 바로 Artificial Interlligence with Ecology 이다. 

AI의 발전은 단순히 우리의 일상생활에만 변화를 가져온 것이 아니다.

그 이상으로 생태계의 연구에서 AI 분야는 크게 활약을 하고 있다.

 

위의 기사에서도 나오듯, AI 기술로 소리나 음향에 있어서 원하는 소리만을 추출할 수 있는 기술이 발전하여 특정 생물들에 대한 연구가 더 정교하게 이루어지고 있다. 기술 발전에 따라 Computer Vision에서는 이제 음향학도 중요해주시고 있는 동향을 보이는 것이다. 예시로, University of Maryland에서 CV Video & Audio에 대한 연구가 이루어지면서, 소리를 시각화(visualize)하고 이를 분석하는 형태의 연구가 이루어지고 있다.

또한, AI와 빅데이터를 통해 생물들의 움직임, 위치, 밀집도 등 생물과 생태계의 연구에 있어서 ICT 기술을 크게 관여를 하고 있다.

 

또한, 이전의 생태학자들은 머신 러닝을 통해서 수십년 동안 하나의 생명체를 관찰하고 라벨링(labeling)을 해오는 작업을 했다면, 최근의 연구들은 딥러닝을 활용하여 더 이상 라벨링이 필요치 않으면서 이전의 작업들을 보다 효율적으로 작업할 수 있도록 하였다. (위의 기사에서는 립 네덜란드 해양 연구소(NIOZ)의 예린 회켄다이크(Yerin Hökendike)와 지구관측과학 책임자인 데비스 투이아(Devis Tuia)로 구성된 학제 간 연구팀은 딥러닝 모델을 사용해 사진 속의 바다표범 수를 세었다고 나와있다.)

 

AI 분야의 연구는 하나의 분야에 국한되지 않는다.

IT 기업에서만 사용한다는 생각을 넘어서서 AI의 활용성에 대해서 더 넓은 시야를 가지고 바라보게 된다면 그 활용분야는 무궁무진할 것이다.

Linear combination = 기본변형 (eg. v1, 3v1-1v2+1/2v3)

 

Span: set of all linear combinations of the vectors (기본변형으로 만들 있는 모든 벡터들)

 

Linear combination 통한 matrix multiplication inner product & outer product 계산 방법 존재

 

Linearly independent: only one solution (trivial solution)

 

Linearly dependent: other nontrivial solutions / linearly dependent set produces multiple possible linear combinations.

 

Subspace: a subset of R^n closed under linear combination

              ==> a subspace is always represented as Span{v1, …, vp}

Basis of a subspace: set of vectors that satisfies (1) fully spans the given subspace H (2)linearly independent

•eg. H = Span{v1, v2, v3} è Span{v1, v2} forms a plane, but v3=2v1+3v2 Span{v1, v2} è {v1, v2} is a basis of H, but not {v1, v2, v3} nor {v1} is a basis.

•Basis is not unique

•BUT, 어떤 종류의 basis라도 basis 있는 벡터의 갯수=dimension unique!)

Column Space

(eg. Linearly dependent columns)

 

Rank of matrix A = dim Col A

 

 

Linear Tranformation(선형 변환)

 

 

Object-Oriented Programming

클래스와 인스턴스

class Student(object):  # 클래스 선언부 (예약어 - 클래스 이름 - 부모 클래스)
    SCHOOL = 'GOORM'    # 클래스 속성 (Class attribute)

    def __init__(self, name: str, sid: int):     # 생성자 (현재 수정하고자 하는 객체=self)
        self.name = name                         # 속성 (Attribute)
        self.sid = sid
        self.classes = set()

    # 클래스 함수 (Method)
    def take_class(self, class_name: str) -> None:
        self.classes.add(class_name)

    def drop_class(self, class_name: str) -> None:
        self.classes.discard(class_name)

# 클래스 생성
gildong_hong = Student('Gildong Hong', 20224352)
# 속성 출력
printgildong_hong.name, "in", Student.SCHOOL)
# 메소드 실행
gildong_hong.take_class("CS101")
gildong_hong.take_class("CS202")
gildong_hong.drop_class("CS101")

# 출력 결과
# Gildong Hong in GOORM

 


 

Magic Method (매직 메소드)

(cf) __init__, __call__, ___length__, __getitem__ 을 많이 사용함

  생성자 (__init__)

  소멸자 (__del__)

  Indexing 메소드 (__getitem__, __setitem__)

  etc

#Indexing
class DoubleMapper(object):
    def __init__(self):
        self.mapping = {}
    def __getitem__(self, index):  # Indexing get
        return self.mapping.get(index, index * 2)
    def __setitem__(self, index, item):  # Indexing set
        self.mapping[index] = item
mapper = DoubleMapper()
print(mapper[10], mapper[1, 2]) # 20 (1, 2, 1, 2)
mapper[10] = 15
print(mapper[10], mapper[1, 2]) # 15 (1, 2, 1, 2)
#lengh 메소드
class Dataset:
	def __init__(self, data, times=3):
        self.data = data
        self.times = times
    def __len__(self):  # len(instance) 호출될 시 호출
        return len(self.data) * self.times
    def __getitem__(self, index):
        if index > len(self):
            raise IndexError()
        return self.data[index % len(self.data)]
dataset = Dataset([10, 2, 5, 2], times=5)
print(len(dataset)) # 20\
#Typing
class Student:
    def __init__(self, name: str, sid: int):
        self.name = name
        self.sid = sid
    def __str__(self): # str 형변환
        return self.name + '_' + str(self.sid)
gildong_hong = Student("Gildong Hong", 20224372)
print(gildong_hong)  # Gildong Hong_20224372
#함수화 메소드(__call__)
class AdditionNumber(object):
    def __init__(self, number: int):  # 생성자
        self.number = number

    # 함수화 메소드
    def __call__(self, number: int): # *args, **kargs도 받을 수 있다.
        return number + self.number

addition_5 = AdditionNumber(5)
print(addition_5(10))  # 15 ==> 객체를 함수처럼 사용
                       # (cf) add.__call__(*args)
# iterable
seq = [1, 2, 3, 4, 5]
for elem in seq:
    print(elem)
print()

seq = list([1, 2, 3, 4, 5])
iterable = iter(seq)    #iter 내장함수(__iter__호출)
while True:
    try:
        elem = next(iterable)   #next 내장함수(__next__호출)
    except StopIteration:
        break
#context manager
class Student:
    def __init__(self, name, sid):
        self.name = name
        self.sid = sid

    def __enter__(self):  # with 구문에 들어갈 때 사용, return 값이 as 이하로 할당
        self.classes = set()
        return self

    def __exit__(self, exc_type, exc_value, trace):  # with 구문 나갈 때 사용
        self.classes.clear()

gildong_hong = Student("Gildong Hong", 20224372)
with gildong_hong:
    gildong_hong.classes.add('CS201')
with Student("Gildong Hong", 20224372) as gildong_hong:
    gildong_hong.classes.add('CS201')

print(gildong_hong.name, gildong_hong.sid)  # Gildong Hong 20224372
# getter & setter 사용하기
class Circle(object):
    PI = 3.141592
    def __init__(self, raidus=3.):
self.radius = raidus
    def get_area(self):
        return Circle.PI * self.radius ** 2
    def set_area(self, value):
        self.radius = (value / Circle.PI) ** .5

circle = Circle(5.)
print(circle.get_area())
circle.set_area(10)
print(circle.radius)

# property 사용하기 (@ 사용)
class Circle(object):
    PI = 3.141592
    def __init__(self, raidus=3.):
        self.radius = raidus
    @property
    def area(self):
        return Circle.PI * self.radius ** 2
    @area.setter
    def area(self, value):
        self.radius = (value / Circle.PI) ** .5

circle = Circle(5.)
print(circle.area)
circle.area = 10.
print(circle.radius)

 


 

Inheritance & Polymorphism

명시적인 private & protected 범위가 없음모두 public

• private 변수/함수 이름 앞에 “__”를 붙임 (밑줄 2)

Ex) self.__name, self.__sid

• protected 변수/함수 이름 앞에 “_”를 붙임 (밑줄 1)

Ex) self._name, self._sid

class Student:
    def __init__(self, name: str, sid: int):
        self.name = name
        self.sid = sid
        self.classes = []

    def __str__(self):
        return self.name + "_" + str(self.sid)

    def take_class(self, class_name: str) -> None:
        self.classes.append(class_name)

class Master(Student):  # Student 상속
    def __init__(self, name: str, sid: int, professor: str):
        super().__init__(name, sid)  # 부모 클래스 생성자 접근, 정해진 부르는 타이밍은 없다.
        self.professor = professor

    def __str__(self):  # __str__ 재정의 → 다형성
        return super().__str__() + "_" + str(self.professor)

master = Master('Gildong Hong', 20224375, 'Prof Shin')
print(master)   # Gildong Hong_20224375_Prof Shin
print(super(Master, master).__str__()) # Gildong Hong_20224375 ==> super로 언제나 원하는 상위 클래스로 변환

# function visibility
class TestClass(object):
    def __init__(self):
        self.attr = 1 # Public 
        self._attr = 2 # Protected 
        self.__attr = 3 # Private
instance = TestClass()
print(dir(instance))
# 출력 결과
#['_TestClass__attr', '__class__', '__delattr__', 
# '__dict__', '__dir__', '__doc__', '__eq__', '__format__', 
# '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', 
# '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', 
# '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', 
# '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_attr', 'attr']

'AI NLP Study > Python' 카테고리의 다른 글

Python 자료구조와 Pythonic Programming  (0) 2022.01.10
Python Overview, Variable & Operator  (0) 2022.01.07

Data Structure

Lists

: 아무 타입이나 넣기 가능 + 길이가 정해져 있지 않음

  • List indexing: seq[index] 형태로 요소 하나 접근
  • List slicing: seq[start: end: step] 형태로 List 자르기 (end포함X)

 

Reserved Words VS Built-in functions VS Methods

  • 문법적 요소, 괄호X, 재정의 불가능  del, if-else, assert
  • 기본 정의된 함수, 별개 함수 사용, 재정의 가능, 편의성 향상 --> len(), range(), sum()
  • 객체 내 정의된 함수, .methods()로 접근, 해당 객체를 다룸 --> .append(), .insert(), .extend()

 

 

Tuple

  • Immutable list(불변 타입 리스트)
  • ( ) 를 사용
  • 함수에서 2개 이상 요소를 반환할 때 사용
  • Tuple안의 요소는 가변 타입일 수도 있음
  • String 타입일 때 일종의 문자 tuple로 생각 가능

 

Packing and Unpacking

  • Unpacking: * (Asterisk)로 남는 요소를 리스트로 남기기 가능


Dictionary

  • 매핑을 위한 데이터 구조 (key , value)
  • Key: 불변 타입만! + 중복이 불가능
  • Set: Dictionary의 Key만 집합처럼 모여 있는 형태 


Conditional Statements

  • if-elif-else
  • 삼항 연산자: [Value1] if [Condition] else [Value2]

 

Loop

  • While Statement: 조건을 만족하는 동안 출력
  • For Statement: 주어진 객체를 순환 (for [Element] in [Iterable])
  • break: 가장 바깥쪽의 반복문 나가기
  • continue: 가장 바깥의 반복문의 처음으로 되돌아가기 

 

Scope

  • Global scope: 최상위에 선언 == 다른 파일에서도 접근 가능
  • Local scope: 함수 안에 선언 == 상위함수에서 접근 불가 


Variable Capture

  • 상위 값이 바뀌면 하위 값이 바뀜
  • 파라미터가 없는데도 불구하고 함수내에서 바뀌어버림 --> 따라서, 파라미터를 써줘야 버그가 발생이 없어진다.
  • Closure = Factory형식
  • 파이썬에서 함수 = 일반 객체
  • 변수로 할당 가능

Decorator

  • 함수 하나를 인자로 받아  같은 형태의 함수를 반환하는 함수
  • @을 사용
  • Class를 사용할 시 Decorator에 인자 추가가 가능

Parameters

  • Function Parameters
  • Variable Length Parameter
  • Keyword Variable Length Parameter 

 



Pythonic Programming

Comprehension

  • result = [i * 2 for i in range(10)] // append
  • result = {str(i): i for i in range(10)} // key:value
  • result = {str(i) for i in range(10)} // add()
  • evens = [i for i in range(100) if i % 2 == 0] // 원하는 요소만 추가
  • result = [(i, j) for i in range(5) for j in range(i)] // 이중 for문
  • eye = [[int(i == j) for j in range(5)] for i in range(5)] // 다차원 배열 만들기

 

Generator

  • 요소를 하나씩 생성해서 반환하는 객체
  • Function에 yield를 사용하면 Generator가 된다
  • 괄호로 generator comprehension 형태로 선언 가능
  • even_generator = (i * 2 for i in range(100))

 

Lambda Function

  • 함수 이름 없이 빠르게 만들어 쓸 수 있는 함수  --> add = lambda a, b : a+b
  • seq = [6, -2, 8, 4, -5]    list(map(lambda x: x * 2, seq))  -->  [12, -4, 16, 8, -10]
  • seq = [6, -2, 8, 4, -5]    list(filter(lambda x: x > 0, seq))  -->  [6, 8, 4]

Python Overview

Features of python

  • 플랫폼 독립적인 인터프리터 언어
  • 완전 객체 지향 언어
  • 동적 타이핑 언어

 

Variable & Operator

How to Name Variables

  • 알파벳, 숫자, 언더스코어(_)로 선언
  • 변수명은 그 변수의 특징이 잘 살아 있게 하자(가독성)
  • 변수명은 대소문자가 구분
  • 변수명으로 쓸 수 없는 예약어가 존재

 

Out-place VS In-place 연산

  • Out-place: 명시적으로 새로운 객체 생성  // a = a + 1
  • In-place: 기존 객체를 수정 시도하고, 불가능할 시 새로운 객체 생성  //  a += 1

 

Primitive Data Types(Immutable / Mutable Types)

  • Immutable Type (불변 타입)이다
  • Python의 모든 것은 객체  Primitive Data Type 들 역시 객체
  • *불변 타입들은 저장된 값이 변하지 않는다!
  • 모든 타입은 Physical Memory 주소를 가르침
  • Primitive Data Type과 Tuple을 제외한 다른 모든 파이썬 객체는 Mutable Type (가변 타입)

파이썬에서 대입은 메모리 주소 복사의 원칙적 

  • 값을 복사하지 않고 같은 주소를 공유
  • immutable인데 수정이 필요하면 새로운 객체 생성

primitive data 크기에 따른 객체 할당 방법

  • 흔한 객체는 기존 객체를 들고 온다
  • 복잡한 값을 가지면 객체를 새로 형성

 

Types

* Dynamic Typing:

데이터 타입은 코드 실행 지점에서 정해진다 // a = 10  VS  int a = 10


* Implicit Type Conversion

: bool → int → float → complex 순서로 타입이 정해진다


* Explicit Type Conversion

: [Type]([value])로 명시적 형 변환


* Type Checking

: type(), isinstance([variable], [type])

 

임베디드 시스템은 모든 곳에 있다. 컴퓨터 시스템이 우리가 사용하는 일상생활의 모든 기기에 들어가 있은 지 오래다.

특히, IoT(Internet of Things)의 발달은 급속도로 이루어지고 있으며, "스마트"라는 단어 또한 땔 수 없는 단어가 되어버렸다. 이미 익숙해져 버린 현대 사회는 특히 4차 산업과 함께 친숙한 존재가 되었다.

 

....라는 것이 많은 사람들의 생각일 것이다.

하지만, 이 생각은 "디지털 문맹"을 고려하지 못한 생각일 것이다.

 

&copy;mindforest

디지털 문맹

디지털 사회에서는 치명적인 문제이다.

대부분은 장노년층의 정보화 수준이 일반 국민의 56.3%로 저조하면서 발생하는 문제이다.

그나마 최근에는 스마트폰을 가지지 않은 사람들은 과거보다 매우 적어졌으므로, 디지털 기계의 소지 여부에 대해서는 과거보다는 나은 상황이다 (물론 그렇다고 해서 이쪽이 완전히 해결되었다고 볼 수도 없다)/

은행 업무, 쇼핑, 검색 등 모든 일이 스마트폰 하나로 해결되는 세상에서, 애플리케이션을 다운로드하는 것조차 버겁게 느껴지는 디지털 문맹을 가진 사람들을 위한 IT 교육 프로그램을 운영하고 있음에도 불구하고 어려움은 지속되고 있다.

 

프로그램의 문제도 있다고 생각된다. 

일반 사람이 가볍게 사용하는 어플리케이션들을 중심으로 교육이 가능할 수 있음에도 불구하고, 

너무나 많은 어플리케이션들을 사용함으로써 (심지어 사적인 이익을 챙기기 위해서 애플리케이션을 만들고 이를 교육용이라고 사용하는 경우도 있는 듯하다), 오히려 학습자들에게 있어 더 복잡해지고 어려워지는 부분이 있다.

 

프로그램의 문제가 없다고 해도, 대다수의 자원봉사자들이나 교사들은 근무하는 기간이 단기 인력이기 때문에 지속적인 교육 또한 어렵다는 점이 존재한다.

 

이를 위한 해결책을 위해서 다양한 노력이 필요하다.

그중 하나는 UBC의 eDAPT(http://www.cs.ubc.ca/labs/edapt/)에서 진행하는 프로젝트들을 예시로 들 수 있겠다.

직접 대학이나 연구기관에서 용도에 따른 (특히나 장노년층이 디지털 세계에 익숙해질 수 있도록 하는 용도) 교육용 프로그램, 혹은 소프트웨어를 개발하는 것이다. 

생각해보면 100세 시대를 넘어서 120세 시대를 살고 있는 우리에게 있어서 장노년층을 주 고객층으로 해서 소프트웨어를 성공적으로 개발을 한다면 기업 입장에서 보면 이익 창출하기도 매우 좋은 기회가 되지 않을까.

 

혹은 체계적이고 전문전인 교육 프로그램의 생성이 필요하다고 생각된다.

마치 소프트웨어에서 오픈소스가 있으면 목적에 따라 해당 오픈소스를 일부 수정만 하면 되는 것처럼,

교육 프로그램의 체계화된 틀이 있다면, 학습자들의 수준이나 목적에 따라 쉽게 프로그램을 기획하고 효과적으로 디지털 문맹을 없앨 수 있지 않을까라는 생각이 든다.

http://www.aitimes.com/news/articleView.html?idxno=140387 

 

[칼럼이 있는 AI톡]⑦ 인간과 기계의 결합: 하이브리드(hybrid) 존재, 사이보그 - AI타임스

\"칼럼이 있는 AI톡\"중앙대 인문콘텐츠연구소&AI타임스 공동기획[편집자주] 인공지능(AI)이 우리 일상 생활 속으로 점점 더 가깝게 다가오고 있습니다. 인공지능의 좋은 점과 나쁜 점에 대해서

www.aitimes.com

 

이번에도 역시나 AI Times 중에서 관심 있던 글을 공유해본다.

 

지난번에 읽었던 기사는 메타버스에 대한 이야기였다.

메타버스의 경우, 사람이 직접 데이터의 세계에 들어가는 것이 아니다.

원자 세계(우리가 사는 현실 세계)에서 단순히 가상의 세계를 디지털로 만듦으로써, 디지털 세계를 나를 대체할 디지털 매개체인 아바타를 통해서 돌아다니는 것이 메타버스라고 생각된다.

코로나가 많아지면서 점점 메타버스는 관심이 집중되고 있음은 4차산업에 대한 관심이 조금이라고 있고, 뉴스를 보는 사람이라면 어디선가 한 번쯤은 들어봤을 법한 이야기일 것이다.

 

하지만 4차 산업 혁명이후의 세계에는 어떤 세상이 그려질까.

이미 다른 글들에서도 계속 언급한 나의 생각이지만, 바로 디지털 세계가 원자의 세계로 직접적으로 영향력을 끼치는 것이다.

대표적으로 SF에서 나오는 인공지능들, 혹은 사이보그들을 예로 들 수 있을 것이다.

 

특히 사이보그는 인간과 기계의 결합을 상징하는 대표적인 개념이다. 위의 기사에 따르면, 사이보그들은 유기체와 기계로 구성된 하이브리드 존재라고 한다. 

기사에서는 사이보그를 "어떤 특정한 실체라기보다는 시대적 상황을 설명하고자 소개한 용어"라고 정의한다. "사이보그는 근본적으로 인간의 물리적 능력 또는 힘의 강화라는 측면에서는 석기시대의 도구들과 차별되지 않는다."라고도 한다. 다만 AI와 같은 첨단과학기술들로 하여금 인간의 지적/육체적 능력을 넘어서고 압도하는 점에서 질적인 차이를 보인다고 한다.

그리고 이 존재들은 이제 현실에서 나타나기 시작하고 있다.

지금은 단순히 인간과 기계 간의 결합에 대해서 시작을 하고 있다. 가장 간단한 것을 생각해보면 인공치아나 인공 안구, 인공 팔과 다리 등을 예시로 들 수 있겠다. 하지만, 점차 인공지능에 대한 발전과 첨단기술의 발전은 그 이상의 결과물을 가져오지 않을까? 언젠가는 인간의 지적인 부분까지 기계를 사용하여 인간의 한계를 넘어서려는 노력들이 있지 않을까?

 

인공지능에 대한 연구가 급속도로 이루어지면서 SF와 같은 세계가 실제로 생기지 않을까라는 생각이 들게 된다.

어쩌면 그 이상의 발전이 있을 경우, 정말로 디지털 세계 자체가 원자 세계에 직접 간섭을 하는, 정말로 SF에 나올법한 스스로 생각하고 스스로 움직이는 디지털 생명체가 생겨나는 일이 발생하지 않을까.

'IT 트렌드' 카테고리의 다른 글

AI와 생태계  (0) 2022.01.24
디지털 문맹: 4차 산업과 함께 드리운 그림자  (0) 2021.12.03
4차 산업 이후는 하이브리드  (0) 2021.11.20
Metaverse School  (0) 2021.11.15
자율주행차의 문제와 전망은?  (0) 2021.09.14

+ Recent posts