This site uses cookies.
Some of these cookies are essential to the operation of the site,
while others help to improve your experience by providing insights into how the site is being used.
For more information, please see the ProZ.com privacy policy.
Freelance translator and/or interpreter, Verified site user
Data security
This person has a SecurePRO™ card. Because this person is not a ProZ.com Plus subscriber, to view his or her SecurePRO™ card you must be a ProZ.com Business member or Plus subscriber.
Affiliations
This person is not affiliated with any business or Blue Board record at ProZ.com.
Services
Translation, Software localization
Expertise
Specializes in:
IT (Information Technology)
Computers: Systems, Networks
Computers (general)
Also works in:
Computers: Software
More
Less
Rates
Payment methods accepted
PayPal
Portfolio
Sample translations submitted: 2
English to Korean: Python Programming: An Introduction to Computer Science General field: Tech/Engineering Detailed field: Computers: Software
Source text - English 1.1 The Universal Machine
Almost everyone has used a computer at one time or another. Perhaps you have played
computer games or used a computer to write a paper, shop online, listen to music, or
connect with friends via social media. Computers are used to predict the weather, design
airplanes, make movies, run businesses, perform financial transactions, and control factories.
Have you ever stopped to wonder what exactly a computer is? How can one
device perform so many different tasks? These basic questions are the starting
point for learning about computers and computer programming.
A modern computer can be defined as “a machine that stores and manipulates
information under the control of a changeable program.” There are two
key elements to this definition. The first is that computers are devices for manipulating
information. This means we can put information into a computer,
and it can transform the information into new, useful forms, and then output or
display the information for our interpretation.
Computers are not the only machines that manipulate information. When
you use a simple calculator to add up a column of numbers, you are entering
information (the numbers) and the calculator is processing the information to
compute a running sum which is then displayed. Another simple example is a
gas pump. As you fill your tank, the pump uses certain inputs: the current price of gas
per gallon and signals from a sensor that reads the rate of gas flowing into your car.
The pump transforms this input into information about how much gas you took and how much money you owe.
4.2 The Object of Objects
The basic idea of object-oriented development is to view a complex system as the interaction
of simpler objects. The word objects is being used here in a specific technical sense. Part of the
challenge of OO programming is figuring out the vocabulary. You can think of an OO object as
a sort of active data type that combines both data and operations. To put it simply, objects
know stuff (they contain data), and they can do stuff (they have operations). Objects interact
by sending each other messages. A message is simply a request for an object to perform one of its operations.
Consider a simple example. Suppose we want to develop a data processing
system for a college or university. We will need to keep track of considerable
information. For starters, we must keep records on the students who attend
the school. Each student could be represented in the program as an object. A
student object would contain certain data such as name, ID number, courses
taken, campus address, home address, GPA, etc. Each student object would also
be able to respond to certain requests. For example, to send out a mailing,
we would need to print an address for each student. This task might be handled by
a printCampusAddress operation. When a particular student object is sent the printCampusAddress
message, it prints out its own address. To print out all the addresses, a program would loop
through the collection of student objects and send each one in turn the printCampusAddress message.
9.1.1 A Simulation Problem
Susan Computewell’s friend, Denny Dibblebit, plays racquetball. Over years of
playing, he has noticed a strange quirk in the game. He often competes with
players who are just a little bit better than he is. In the process, he always seems to
get thumped, losing the vast majority of matches. This has led him to question
what is going on. On the surface, one would think that players who are slightly
better should win slightly more often, but against Denny, they seem to win the lion’s share.
One obvious possibility is that Denny Dibblebit’s problem is in his head.
Maybe his mental game isn’t up to par with his physical skills. Or perhaps the
other players are really much better than he is, and he just refuses to see it.
One day, Denny was discussing racquetball with Susan, when she suggested
another possibility. Maybe it is the nature of the game itself that small differences
in ability lead to lopsided matches on the court. Denny was intrigued by the idea;
he didn’t want to waste money on an expensive sports psychologist if it wasn’t going
to help. But how could he figure out if the problem was mental or just part of the game?
Susan suggested she could write a computer program to simulate certain
aspects of racquetball. Using the simulation, they could let the computer model
thousands of games between players of differing skill levels. Since there would
not be any mental aspects involved, the simulation would show whether Denny
is losing more than his share of matches.
Let’s write our own racquetball simulation and see what Susan and Denny
discovered.
10.5 Objects and Encapsulation
10.5.1 Encapsulating Useful Abstractions
Hopefully, you are seeing how defining new classes like Projectile and Student
can be a good way to modularize a program. Once we identify some useful
objects, we can write an algorithm using those objects and push the implementation
details into a suitable class definition. This gives us the same kind of separation of
concerns that we had using functions in top-down design. The main program only has
to worry about what objects can do, not about how they are implemented.
Computer scientists call this separation of concerns encapsulation. The implementation
details of an object are encapsulated in the class definition, which insulates the rest of
the program from having to deal with them. This is another application of abstraction
(ignoring irrelevant details), which is the essence of good design.
For completeness, I should mention that encapsulation is only a programming
convention in Python. It is not enforced by the language, per se. In our
Projectile class we included two short methods, getX and getY, that simply
returned the values of instance variables xpos and ypos, respectively. Our
Student class has similar accessor methods for its instance variables. Strictly
speaking, these methods are not absolutely necessary. In Python, you can access
the instance variables of any object with the regular dot notation. For example,
we could test the constructor for the Projectile class interactively by creating an object
and then directly inspecting the values of the instance variables:
Translation - Korean 1.1 범용 기계
사람들은 다양한 용도로 컴퓨터를 사용한다. 컴퓨터 게임을 하거나
보고서를 쓰기도 하고, 음악을 듣고 SNS로 친구들과 연락을 취하기도 한다.
그런가 하면, 일기예보나 항공기 설계, 영화 제작, 사업체 운영, 금융거래나
공장을 제어하는데도 컴퓨터를 사용한다.
컴퓨터가 정확히 어떤 물건인지 누구나 한번쯤 궁금했던 적이 있었을 것이다.
이 한 가지 기계로 어떻게 그렇게 다양한 일을 할 수 있는거지? 라는 이 기본적인
물음이 컴퓨터와 프로그래밍을 배우기 위한 출발점이 된다.
현대적인 컴퓨터는 "변경 가능한 프로그램에 따라 정보처리와 저장을 수행하는
장치"라고 정의할 수 있다. 이 정의는 두 가지 중요한 요소를 포함한다.
첫 번째는 컴퓨터는 정보처리를 위한 장치라는 것이다. 다시 말하면, 우리가
컴퓨터에 정보를 입력하면 컴퓨터가 이를 새로운 형태의 유용한 정보로
변환하고 그 결과를 다시 우리가 이해할 수 있는 형태로 출력한다.
그러나 컴퓨터 이외에도 정보처리가 가능한 장치가 있다.
당신이 흔한 계산기를 사용하여 일련의 숫자를 더하고 있을 때에도
당신은 정보를 입력하고, 계산기는 이 정보를 처리하여 합을 구한 뒤
그 값을 출력하는 과정이 이루어진다.
또 다른 쉬운 예는 주유소의 주유기이다. 당신이 차에 휘발유를 넣기 시작하면,
주유기에는 휘발유의 현재 갤런당 가격, 유량 센서로부터 입력된 주유량 정보
등이 입력된다. 주유기는 이들 정보를, 차에 휘발유가 얼마나 들어갔으며
당신이 얼마만큼의 연료비를 지불해야 하는지에 대한 정보로 변환하게 된다.
4.2 만물을 나타내기 위한 객체
객체지향 개발의 기본적인 아이디어는 복잡한 체계를 좀더 단순한 객체들의
상호작용으로 보는 것이다. 여기서 객체란 단어는 특별한 기술적 의미를 갖는다.
객체지향 프로그래밍을 배우면서 직면하는 어려움 중에는 이런 용어를 이해하는
것도 포함된다. 객체는 데이터와 그에 대한 연산을 결합한 모종의 자료형으로
볼 수 있다. 더 쉽게 말하면, 객체는 무언가를 "알고(데이터)" 있을 수
있으며 또한 무언가를 "할(연산)" 수 있다. 그리고 객체는 서로 메시지를
보내는 방법으로 상호작용 한다. 메시지란 간단하게 말하면 다른 객체에게
그 객체가 가지고 있는 연산을 하도록 요청하는 것이다.
쉬운 예를 들어, 우리가 대학교에서 쓰이는 데이터 처리 시스템을
만들어야 한다고 가정하자. 이 시스템은 상당히 많은 양의 데이터를 유지할 수 있어야
한다. 먼저, 대학에 등록한 학생들에 대한 정보를 유지해야 한다. 각각의
학생은 프로그램 내부적으로 객체로써 표현될 수 있을 것이다. 학생을 나타내는
객체는 학번, 수강과목, 교내 주소, 거주지 주소, 학점 등에 대한 정보를
포함할 수 있다. 예를 들어, 학생 모두에게 우편을 보내기 위해 모든 학생의
주소를 출력해야 한다고 하자. 이 과업은 printCampusAddress 연산을 통해
수행할 수 있다. 어떤 학생 객체가 printCampusAddress 메시지를 받게 되면,
이 객체는 학생의 주소를 출력하게 된다. 모든 학생의 주소를 출력하기 위해
프로그램은 각각의 학생 객체마다 printCampusAddress 메시지를 보내게 될
것이다.
9.1.1 시뮬레이션 문제
Susan Computewell의 친구 Denny Dibblebit은 라켓볼을 즐긴다. 여러 해 동안
라켓볼을 플레이 해 오면서 그는 자신에게 특이한 현상이 일어난다는 것을 알게
되었다. Denny는 자신보다 조금 실력이 나은 선수와 시합을 자주 했다. 그리고
이런 시합에서는 그가 질 때가 많았고, 이 때마다 그는 분통을 터뜨렸다. 그러다가
그는 문득 생각하게 되었다.
언뜻 생각하기에, 살짝 실력이 더 좋다면 이길 확률도 살짝 높아야 하는
것이 아닐까? 하지만 그들은 거의 항상 Denny로부터 승리를 거뒀다.
한 가지 분명한 것은 그의 문제가 심리적인 것이라는 것이다. 어쩌면, 그의
정신력이 물리적 실력에 미치지 못하는 것일 수도 있고, 자신보다 한참 높은
상대의 실력을 눈치채지 못하고 있을 수도 있다.
그러던 어느 날, Denny는 Susan과 라켓볼에 대하여 대화를 나누고 있었다.
Susan은 라켓볼 자체가 약간의 실력 차이도 시합 결과에 큰 차이로 나타나는
경기일 수도 있다며 다른 가능성을 제기하였다. Denny도 그 이야기에 흥미가
동했다. 스포츠 심리학자에게 큰 돈을 들여가며 도움을 받고 싶지는 않았지만,
자신의 문제가 정신적인 것인지 아니면 경기 자체의 특징인지는 알고 싶었기
때문이다. 하지만 이걸 어떻게 하면 확인할 수 있을까?
Susan은 라켓볼에 대한 시뮬레이션 프로그램을 작성해 보겠다고 했다. 시뮬레이션을
통해 다양한 실력차를 가진 선수들이 경기를 하였을 때 어떤 결과가 나오는지를
모형화 해볼 수 있을 것이다. 이 시뮬레이션은 정신적인 요소를 포함하지 않을
것이므로 이러한 요소에 대해 영향을 받지 않았을 때 Denny가 실제 실력보다
시합에서 많이 지고 있는 것인지를 알 수 있게 해줄 것이었다.
자 이제, 직접 라켓볼 시뮬레이션을 작성하여 Susan과 Denny가 어떤 사실을
알게 되었는지 확인해 보도록 하자.
10.5 객체와 캡슐화
10.5.1 중요한 사항에만 신경쓰도록 해주는 캡슐화
이렇게 발사체 혹은 학생의 경우처럼 클래스를 작성하는 것은 프로그램을
모듈화하기 위한 좋은 수단이다. 어떤 대상을 객체로 삼을지 잘 정하고 나면,
이들 객체를 이용하는 알고리즘과 이들 객체를 구현할 수 있다. 이는 하향식
설계에서 함수를 사용했을 때처럼 우리가 관심사의 분리(separation of concerns)를
실현할 수 있게 해준다. 주 프로그램은 객체가 어떤 일을 할 수 있는지만 알면
되며, 객체가 그 일을 어떻게 하는지(구현)에 대해서는 신경쓸 필요가 없게 된다.
컴퓨터 과학에서는 이러한 관심사의 분리를 캡슐화(encapsulation)라고 부른다.
객체의 구체적인 구현사항은 클래스 정의 안에 포장되어, 프로그램의 나머지
부분으로부터 격리되고 따라서 이를 다룰 필요가 없게 된다.
이 또한 또 다른 형태의 추상화이며 좋은 설계를 하는데 핵심이 된다.
설명을 보태자면 캡슐화는 파이썬에서 쓰이는 프로그래밍 관습 중 하나일 뿐,
그 자체로는 언어 스펙의 강제사항도 아니다. 우리가 설계했던 발사체 클래스에는
getX와 getY라는 짧은 메소드 두개가 포함되었다. 이 두 메소드는 각각 단순히
xpos와 ypos라는 인스턴스 변수를 리턴하는 메소드이다. 또 학생 클래스에도
인스턴스 변수에 접근할 수 있는 비슷한 접근자 메소드가 있다.
엄밀하게 말하자면, 이러한 메소드는 반드시 필요한 것은 아니다. 파이썬에서는
흔히 쓰이는 점 문법(dot notation)을 통해 어떤 객체의 인스턴스 변수에도
자유로이 접근할 수 있다. 예를 들면, 발사체 클래스도 생성자를 통해 객체를
생성한 뒤, 인스턴스 변수에 직접 접근해 볼 수 있다.
Japanese to Korean: 深層学習 General field: Tech/Engineering Detailed field: Computers: Software
Translation - Korean 1.1 시작하며
딥 러닝(deep learning)은 표면적으로는 이른바 ‘깊은’, 다시 말해 여러 층을 가진 신경망 모형을 사용한 머신 러닝을 통틀어 부르는 말이다. 기계학습에 대한 연구는 1950년대 말부터 인공지능 분야의 한 하위 분야로 발전해 왔다. 인공지능(artificial intelligence) 연구는 컴퓨터에 인간과 같은 지능을 부여하고 나아가 이를 통해 인간 지능의 활동이나 정보가 처리되는 원리를 밝혀내는 것이 목적이다. 이 때 인간이 가진 지식을 컴퓨터상에서 어떻게 나타내고 이용할 것인지가 중요한 문제가 된다.
이 문제를 풀기 위해 먼저 지식을 if-then 규칙이나 논리식 등의 형태로 명시적으로 나타내어 프로그래밍하는 방식을 생각해 볼 수 있다. 그러나 인간의 지식 중에는 문자인식, 얼굴 인식과 같은 패턴 인식이나 운동 등에 대한 학습처럼 명시적으로 표현하기 곤란한 것들이 매우 많다. 머신 러닝(machine learning)에 대한 연구는 이런 묵시적인지식을 구체적인 사례로부터 귀납적인 방식으로 컴퓨터에 학습시키는 것을 주된 목적으로 시작되었다.
인간이나 생물의 뇌신경 시스템은 강력한 학습 능력을 갖고 있다는 것이 밝혀진 후 이들 뇌신경 시스템으로부터 힌트를 얻은 정보 처리 메커니즘인 신경망을 이용한 정보 처리 기법이(1.3절에서 설명) 머신 러닝 연구 초기부터 계속 연구되고 있었다. 그리고 이 연구의 흐름을 따라 최근에는 대량의 전자적 데이터와 강력한 분산병렬 계산을 기반으로 한 딥 러닝이 음성 인식, 일반물체 인식 등의 과제에서 높은 성능을 보이면서 주목을 받게 되었고, 이에 대한 연구가 활기를 띠었다.
신경망 모형에는 다양한 종류가 있으므로 딥 러닝에도 여러 방식이 제안된 바 있다. ‘딥 러닝’이란 단어를 최초로 사용한 것이 언제인지에 대한 여러 설*이 있으나, 이 단어가 유명해지게 된 가장 큰 계기가 신경망의 대표적 연구자 중 한 명인 2006년의 힌튼(Hinton)의 연구진에 의한 연구라는 데에는 대체로 이견이 없다. 이 연구에서는 확률적으로 동작하며 관측 데이터의 생성 확률 모형로 해석할 수 있는 신경망 유형인 볼츠만 머신이 딥 러닝의 기반으로써 사용되었다.
이후 1980년대에 신경망 연구 붐을 일으킨 계층형 신경망과 오차역전파 법을 조합하여, 즉 확률적이 아닌 결정적으로 동작하는 신경망을 기반으로 한 딥 러닝 연구도 활기를 띠게 되었다. 또, 회귀결합을 갖는 신경망도 딥 러닝의 한 종류로 간주되고 있으며, 최근에는 장단기기억(LSTM, Long Short-Term Memory)과 같이 좀 더 복잡한 구조를 갖는 신경망을 사용한 딥 러닝 기법도 제안되고 있다.
정보 처리의 관점에서 본 딥 러닝의 본질적인 의의는 관측 데이터에 내재된 본질적 구조, 그것도 그냥 단순한 구조만이 아니라 단순한 구조부터 복잡한 구조로 계층화된 잠재적 구조를 포착하는 정보 표현을 데이터로부터 학습을 통해 획득할 수 있다는 점에 있다. 이런 의미에서 보면 다층 신경망을 사용하는 방법도 그 다양한 형태 중 한 가지에 지나지 않는다. 이 책에서는 다루지 않지만, 실제로 신경망 이외의 머신러닝 기법, 예를 들면 베이지안 네트워크(Bayesian network)와 같은 확률 네트워크를 사용한 딥 러닝도 연구 중이다.
이번 장에서는 역사적인 배경이나 딥 러닝을 표현 학습으로 보는 관점에 무게를 두고, 딥 러닝의 방법 중 하나인 계층형 신경망을 사용한 딥 러닝을 설명한다. 또 다른 대표적 구현 형태인 제약 볼츠만 머신(Boltzmann machine)을 사용한 딥 러닝은 2장에서 소개할 것이다.
이 장의 이후 내용은 먼저 1.2절에서 딥 러닝의 본질인 내부 표현의 학습에 관해서 기존 연구를 포함한 개요를 설명한다. 그런 다음, 1.3절과 1.4절에서 계층형 신경망과 이를 학습하는 방법을 다루고, 여기에 역사적인 발전 내용을 포함하여 소개한다. 그리고 1.5절에서는 이 두 가지의 관계와 최근 딥 러닝에서의 활용에 관해 설명한다. 1.6절과 1.7절에서는 각각 합성곱 신경망과 오토인코더를 소개할 것이다. 1.8절에서는 지금까지의 내용을 정리하고 과제와 앞으로의 전망을 소개한다.
More
Less
Experience
Years of experience: 8. Registered at ProZ.com: Feb 2018.
Microsoft Excel, Microsoft Word, Latex, Vim, Trados Studio
Bio
My expertise is centered on computing, specifically, machine learning and web programming.I am also translated following 16 IT books written in Japanese and English.
* Books in English
1. John M. Zelle, Python Programming: An Introduction to Computer Science, Franklin Beedle & Associates.
2. Tom Marrs, Json at Work Practical Data Integration for the Web, O'Reilly Media.